여러 가지 이유로 ^, 일부 Django 모델에서 UUID를 기본 키로 사용하고 싶습니다. 이렇게하면 ContentType을 통해 일반 관계를 사용하는 "contrib.comments", "django-voting"또는 "django-tagging"과 같은 외부 앱을 계속 사용할 수 있습니까?
"django-voting"을 예로 사용하면 투표 모델은 다음과 같습니다.
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 사용을 어렵게 만드는 타사 앱의 일반적인 상황입니까? 아니면 내가이 상황을 잘못 읽었 을까요?
Django에서 너무 많은 문제를 일으키지 않고 UUID를 기본 키로 사용하는 방법이 있습니까?
^ 몇 가지 이유 : 개체 수 숨기기, URL "ID 크롤링"방지, 여러 서버를 사용하여 충돌하지 않는 개체 만들기, ...
default
.