如何定义另一个对象与该对象的反向关系,并以“ +”作为其相关名称?
class FeaturedContentPage(Page):
featured_page = models.ForeignKey(
'wagtailcore.Page',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
)
答案 0 :(得分:1)
以related_name
结尾的'+'
*的想法是禁止创建反向关系,就像documented一样:
如果您希望Django 不创建向后关系,请将related_name设置为
'+'
或以'+'
结尾。
您当然仍然可以使用以下方式反向查询:
FeaturedContentPage.objects.filter(featured_page=my_page)
但是没有反向关系,因此my_page.featuredcontentpage_set
是不可访问的。
答案 1 :(得分:1)
related_name
参数用于反向关系名称。如果模型有2个字段引用同一模型
featured_page = models.ForeignKey(
'wagtailcore.Page',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
)
regular_page = models.ForeignKey(
'wagtailcore.Page',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
)
没有related_name='+'
的django将抱怨,因为它使用wagtailcore.Page
模型名称进行反向关联。因为通过将related_name='+'
设置为一个或两个字段,对象中的两个属性不能具有相同的名称,否则将忽略创建反向关系。