在 Django1.5 文档中,有一节关于related_name
. 最后一段是“如果您不希望 Django 创建反向关系,请将其设置related_name
为 '+' 或以 '+' 结尾。
例如,这将确保 User 模型不会与此模型有反向关系:user = models.ForeignKey(User, related_name='+')
. 我什么时候应该使用“+” related_name
?
来自Django docs,一个禁止反向关系的工具,他们的话:
如果您不希望 Django 创建反向关系,请将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 会拒绝启动。鉴于在这种情况下您实际上并不需要它,因此跳过它是有意义的。