只是一个快速的菜鸟问题。每次在模型中使用 GenericRelation 时,是否需要有 content_type、object_id 和 content_object?我得到了泛型关系背后的概念,但我对如何实现它感到困惑。
下面是设置。
地址- 通用内容类型;用于不同的模型。
公司- 一个使用地址通用内容类型的简单模型。
Person - 一个使用地址通用内容类型的简单模型。
在所有模型中都必须具有这三个属性吗?提前致谢!
只是一个快速的菜鸟问题。每次在模型中使用 GenericRelation 时,是否需要有 content_type、object_id 和 content_object?我得到了泛型关系背后的概念,但我对如何实现它感到困惑。
下面是设置。
地址- 通用内容类型;用于不同的模型。
公司- 一个使用地址通用内容类型的简单模型。
Person - 一个使用地址通用内容类型的简单模型。
在所有模型中都必须具有这三个属性吗?提前致谢!
Address
您仅在模型内部需要此字段:
class Address(models.Model):
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
在模型中Company
,Person
您只需指定反向通用关系GenericRelation
:
from django.contrib.contenttypes.fields import GenericRelation
class Company(models.Model):
addresses = GenericRelation(Address)
class Person(models.Model):
addresses = GenericRelation(Address)
有了这个,你可以得到与这样的人相关的地址:
person.addresses.all()