Pour un certain nombre de raisons^, je voudrais utiliser un UUID comme clé primaire dans certains de mes modèles Django. Si je le fais, vais-je encore être en mesure de les utiliser en dehors des applications comme "contrib.commentaires", "django droit de vote" ou "django-marquage" qui utilise des relations générique via ContentType?
À l'aide de "django droit de vote", comme un exemple, le droit de Vote modèle ressemble à ceci:
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)
Cette application semble être en supposant que la clé primaire pour le modèle d'être voté est un entier.
Intégré dans les commentaires de l'app semble être capable de traiter les non-entier PKs, si:
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")
Est-ce que "entier-PK-supposé" problème une situation courante pour les applications tierces, ce qui ferait de l'aide Uuid une douleur? Ou, éventuellement, suis-je une erreur de lecture de cette situation?
Est-il possible d'utiliser les Uuid comme clés primaires dans Django sans causer trop de problèmes?
^ Quelques raisons: le masquage de l'objet compte, la prévention de l'url d'un id d'analyse", l'utilisation de plusieurs serveurs pour créer des objets en conflit, ...