[英]Django - use of related_name '+'?
在Django1.5文档中,有一个关于部分related_name
。 最后一段是“如果您希望Django不要创建反向关系,请将related_name
设置为'+'或以'+'结尾。
例如,这将确保User模型不会与此模型具有向后关系: user = models.ForeignKey(User, related_name='+')
。 什么时候应该在related_name
使用“ +”?
创建反向关系时可能会引起冲突。 考虑一下您有一个抽象模型和该模型的两个子类的情况:
class MyAbstractModel(models.Model):
class Meta(object):
abstract = True
book = models.ForeignKey(Books, related_name="+")
class MyThing(MyAbstractModel):
name = models.CharField(max_length=128)
class MyOtherThing(MyAbstractModel):
number = models.PositiveIntegerField()
如果不使用"+"
,则会出现命名冲突,并且Django会拒绝启动。 考虑到在这种情况下实际上不需要它,因此跳过它是有意义的。
从Django docs (禁止反向关系的工具)开始,他们的话是:
如果您不希望Django不创建向后关系,请将related_name设置为'+'或以'+'结尾。
以上答案是正确的,但我想让其他人更加清楚。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.