升级到 Django1.7 后,related_names 抛出错误
Posted
技术标签:
【中文标题】升级到 Django1.7 后,related_names 抛出错误【英文标题】:After upgrading to Django1.7 related_names throw error 【发布时间】: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(我无法更改)之外的问题。你有什么解决办法吗?
正如我之前所说,我认为您的示例代码没有提供足够的信息来了解问题所在。希望你能弄清楚。
【参考方案1】:
为其中一个字段设置related_name='+'
为我解决了类似的问题。请参阅 this question 上接受答案的 cmets
【讨论】:
以上是关于升级到 Django1.7 后,related_names 抛出错误的主要内容,如果未能解决你的问题,请参考以下文章
升级到 Django 1.7。导入错误:没有名为仪表板的模块
makemigrations 和升级到 Django 1.7 的问题
升级到 django 1.7 后所有管理员网址的 NoReverseMatch