#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), так что это будет проблемой