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