如何访问反向名称为&x27+';在Django?
如何定义从另一个对象到这个对象的反向关系,并将“+”作为其相关名称如何访问反向名称为&x27+';在Django?,django,Django,如何定义从另一个对象到这个对象的反向关系,并将“+”作为其相关名称 class FeaturedContentPage(Page): featured_page = models.ForeignKey( 'wagtailcore.Page', null=True, blank=True, on_delete=models.SET_NULL, related_name='+', ) 以'+'结尾的相关
class FeaturedContentPage(Page):
featured_page = models.ForeignKey(
'wagtailcore.Page',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+',
)
以
'+'
结尾的相关名称的想法是禁用创建反向关系,如下所示:
如果您希望Django不创建向后关系,请将相关名称设置为'+'
,或以'+'
结束
当然,您仍然可以使用以下方法进行反向查询:
FeaturedContentPage.objects.filter(featured_page=my_page)
但因此没有反向构造的关系,因此my\u page.featuredcontentpage\u set
不可访问。相关的\u name
参数用于反向关系名称。如果一个模型有两个字段引用同一个模型
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
model name作为反向关系。由于对象中的两个属性不能具有相同的名称,因此将相关的\u name='+'
设置为一个或两个字段将忽略创建反向关系。将+
设置为不可访问。如文档所述:“如果您希望Django不创建向后关系,请将related_name设置为“+”或以“+”结尾。例如,这将确保用户模型不会与此模型有向后关系”