通用关系模型声明



只是一个快速的菜单问题。我是否需要每次在模型中使用generCralation时都需要content_type,object_id和content_object?我得到了通用关系背后的概念,但我对如何实施它感到困惑。

下面是设置。

地址 - 通用内容类型;用于不同模型。

公司 - 使用地址通用内容类型的简单模型。

- 使用地址通用内容类型的简单模型。

在所有模型中拥有这三个属性至关重要吗?预先感谢!

您仅在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')

在型号CompanyPerson中,您只需用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()

相关内容

  • 没有找到相关文章

最新更新