कई कारणों से ^, मैं अपने कुछ Django मॉडल में एक प्राथमिक कुंजी के रूप में एक UUID का उपयोग करना चाहूंगा। यदि मैं ऐसा करता हूं, तो क्या मैं अब भी "कंट्रीबॉटमेंट्स", "डीजेंगो-वोटिंग" या "डीजेंगो-टैगिंग" जैसे बाहरी ऐप का उपयोग कर पाऊंगा जो कंटेंट टाइप के माध्यम से सामान्य संबंधों का उपयोग करते हैं?
एक उदाहरण के रूप में "django- मतदान" का उपयोग करना, वोट मॉडल इस तरह दिखता है:
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)
यह ऐप यह मान रहा है कि जिस मॉडल को वोट दिया जा रहा है उसके लिए प्राथमिक कुंजी पूर्णांक है।
बिल्ट-इन कमेंट्स ऐप गैर-पूर्णांक पीके को संभालने में सक्षम प्रतीत होता है, हालाँकि:
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")
क्या यह "पूर्णांक-पीके-मान लिया गया" समस्या तृतीय-पक्ष एप्लिकेशन के लिए एक सामान्य स्थिति है जो यूयूआईडी का उपयोग करके दर्द का कारण बनेगी? या, संभवतः, क्या मैं इस स्थिति को गलत बता रहा हूं?
वहाँ बहुत परेशानी का कारण के बिना Django में प्राथमिक कुंजी के रूप में UUIDs का उपयोग करने का एक तरीका है?
^ कारणों में से कुछ: छिपाना वस्तु मायने रखता है, url "आईडी क्रॉलिंग" को रोकना, गैर-संघर्षशील वस्तुओं को बनाने के लिए कई सर्वरों का उपयोग करना, ...
default
।