ด้วยเหตุผลหลายประการ ^ ฉันต้องการใช้ UUID เป็นคีย์หลักใน Django บางรุ่นของฉัน หากฉันทำเช่นนั้นฉันจะยังสามารถใช้แอปภายนอกเช่น "Contrib.comments", "django-vote" หรือ "django-tagging" ซึ่งใช้ความสัมพันธ์ทั่วไปผ่าน ContentType ได้หรือไม่
การใช้ "django-vote" เป็นตัวอย่างรูปแบบการโหวตจะมีลักษณะดังนี้:
class Vote(models.Model):
user = models.ForeignKey(User)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
object = generic.GenericForeignKey('content_type', 'object_id')
vote = models.SmallIntegerField(choices=SCORES)
ดูเหมือนว่าแอปนี้จะสมมติว่าคีย์หลักสำหรับโมเดลที่โหวตเป็นจำนวนเต็ม
ดูเหมือนว่าแอปความคิดเห็นในตัวจะสามารถจัดการ PK ที่ไม่ใช่จำนวนเต็มได้แม้ว่า:
class BaseCommentAbstractModel(models.Model):
content_type = models.ForeignKey(ContentType,
verbose_name=_('content type'),
related_name="content_type_set_for_%(class)s")
object_pk = models.TextField(_('object ID'))
content_object = generic.GenericForeignKey(ct_field="content_type", fk_field="object_pk")
ปัญหา "จำนวนเต็ม - PK- สันนิษฐาน" นี้เป็นสถานการณ์ทั่วไปสำหรับแอปของบุคคลที่สามซึ่งจะทำให้การใช้ UUID เป็นเรื่องยุ่งยากหรือไม่ หรืออาจเป็นไปได้ว่าฉันกำลังอ่านสถานการณ์นี้ผิด?
มีวิธีใช้ UUID เป็นคีย์หลักใน Django โดยไม่ทำให้เกิดปัญหามากเกินไปหรือไม่?
^ เหตุผลบางประการ: การซ่อนจำนวนวัตถุป้องกัน url "id crawling" ใช้เซิร์ฟเวอร์หลายตัวเพื่อสร้างวัตถุที่ไม่ขัดแย้งกัน ...
default
ได้