Общий внешний ключ Django

#python #django #django-models

#python #django #django-модели

Вопрос:

у меня есть три модели с именами company, admin и jobpost. Здесь как компания, так и администратор могут опубликовать задание. Итак, я хотел бы реализовать общий внешний ключ в модели post.

 class Admin(models.Model):
   id = models.AutoField(primary_key=True)

class Company(models.Model):
   id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

class JobPost(models.Model):
    content_type = models.ForeignKey()
    object_id = models.PositiveIntegerField()
    post_by = GenericForeignKey('content_type', 'object_id')
 

здесь идентификатор администратора — целое число, а идентификатор компании — UUID.
Возможно ли реализовать общий внешний ключ в этом случае.

Комментарии:

1. Да, вы можете, поскольку добавление внешнего ключа из одной из ваших собственных моделей в ContentType позволяет вашей модели эффективно привязывать себя к другому классу модели. Поместите content_type = models. Внешний ключ(ContentType, on_delete=модели. КАСКАД) вот так.

2. @Раджеш. здесь id — это целое число и поле uuid, но object_id — это PositiveIntegerField .

3. Добавьте primary_key=True в качестве атрибута для обоих полей идентификатора модели

4. @rajesh вы получили мой вопрос. здесь pk модели администратора — это целое число, а pk модели компании — это uuid. Но здесь object_id является целочисленным положительным полем (согласно документации django), так что это будет проблемой