通用关系模型声明
generic relation model declaration
只是一个简单的菜鸟问题。每次在模型中使用 GenericRelation 时是否都需要 content_type、object_id 和 content_object?我了解泛型关系背后的概念,但对如何实现它感到困惑。
以下是设置。
Address - 通用内容类型;用于不同的模型。
公司 - 使用地址通用内容类型的简单模型。
Person - 使用地址通用内容类型的简单模型。
是不是所有机型都必须具备这3个属性?提前致谢!
您仅在 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()
只是一个简单的菜鸟问题。每次在模型中使用 GenericRelation 时是否都需要 content_type、object_id 和 content_object?我了解泛型关系背后的概念,但对如何实现它感到困惑。
以下是设置。
Address - 通用内容类型;用于不同的模型。
公司 - 使用地址通用内容类型的简单模型。
Person - 使用地址通用内容类型的简单模型。
是不是所有机型都必须具备这3个属性?提前致谢!
您仅在 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()