我最近在related_name
字段的ForeignKey
属性的Django文档中遇到this paragraph:
如果您不希望Django不创建向后关系,请将
related_name
设置为'+'
或以'+'
结束。例如,这将确保User
模型与此模型不具有向后关系:user = models.ForeignKey( User, on_delete=models.CASCADE, related_name='+', )
您希望在什么情况下这样做?
答案 0 :(得分:2)
我还记得那时也很困惑。然而,在我发现自己偶尔这样做的那些年里。如果你知道你永远不需要相关的经理,那么告诉Django不要创建它有一些小优点。
它用作您未使用该关系的文档。这可能对未来的读者有所帮助。这是我做这件事的主要原因,在未来对我自己或其他人说:“这个设计没有想到使用这种关系,所以如果你认为你需要它,就停下来思考它。”
它避免了混乱目标实例的命名空间。有些人关心这一点。
它避免了创建不需要的管理器的开销,理论上应该提高性能。在没有任何基准的情况下,我预计任何此类改进都会非常小。
换句话说,正常的良好编码习惯是不添加您不需要的代码。此选项允许您阻止Django添加您不需要的代码。
现在,我仍然不知道你为什么要“用+结束它”而不只是使用“+”!