在 Django1.5 文档中,有一节是关于related_name. 最后一段是“如果您不希望 Django 创建向后关系,请设置related_name为 '+' 或以 '+' 结尾。
例如,这将确保用户模式不会有倒退与此相关的模型:user = models.ForeignKey(User, related_name='+')。我什么时候应该使用“+” related_name?
Mar*_*arc 11
来自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()
Run Code Online (Sandbox Code Playgroud)
如果不使用"+",您会遇到命名冲突并且 Django 将拒绝启动。鉴于在这种情况下您实际上并不需要它,因此跳过它是有意义的。