繁体   English   中英

Django-使用related_name'+'吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM