【问题标题】:After upgrading to Django1.7 related_names throw error升级到 Django1.7 后,related_names 抛出错误
【发布时间】:2014-07-02 03:27:05
【问题描述】:

使用 Django1.6 一切正常,但升级到 Django1.7 时显示“应用程序注册表未准备好”,因此我将模型中的 get_user_model() 更改为 settings.AUTH_USER_MODEL。

class MyModel(models.Model, SomeMixin):
    content = models.TextField()
    posted_by = models.ForeignKey(settings.AUTH_USER_MODEL,
                              related_name='name1')
    note = models.ForeignKey(SomeModel, related_name='name2')

    created = models.DateTimeField(auto_now_add=True)

现在,在启动服务器时,我收到以下错误消息。

错误: apps.MyModel.posted_by:(fields.E304)“model_field”的反向访问器与“model_field”的反向访问器冲突。 提示:在 'model_field' 或 'model_field' 的定义中添加或更改相关名称参数。

更改相关不是我能采用的最佳方法,因为更改相关名称涉及更改大量代码。我在这里想念什么?我应该寻找什么?任何帮助将不胜感激。

【问题讨论】:

  • 如果相关名称发生冲突,那么除了添加或更改related_name 之外,您实际上无能为力,即使这涉及更改大量代码。目前尚不清楚冲突是什么,因为您的问题是实际模型名称的混合,例如Comment 和像 MyModel 这样的虚构名称。
  • 这只是我的一个模型的一个例子,我在大多数模型中都遇到了同样的错误。我尝试更改相关名称,这似乎解决了除了 User.groups(我无法更改)之外的问题。你有什么解决办法吗?
  • 正如我之前所说,我认为您的示例代码没有提供足够的信息来了解问题所在。希望你能弄清楚。

标签: python django django-models


【解决方案1】:

为其中一个字段设置related_name='+' 为我解决了类似的问题。请参阅 this question 上接受答案的 cmets

【讨论】:

    猜你喜欢
    • 2013-05-25
    • 1970-01-01
    • 2020-10-05
    • 2021-01-21
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    相关资源
    最近更新 更多