python - 使用 ManyToManyField 时字段重复
问题描述
我从 Django 1.10 升级到 1.11,现在我以前工作的两个模型导致错误。它们是仅有的两个具有ManyToManyField
包含related_name
属性的模型。我有另一个ManyToManyField
没有 a related_name
,它工作正常。
引发的错误具有误导性:
<class 'hadotcom.admin.CaseStudyAdmin'>: (admin.E012) There are duplicate field(s) in 'fieldsets[0][1]'
我发现了其他引用该错误的 SO 帖子,并确认它们都不符合我的问题。
如果我注释掉整行,它就会通过检查。我尝试添加一个through
属性,但没有帮助。
示例代码(使用夹层):
class CaseStudyPage(Page):
industries = models.ManyToManyField("IndustryPage", blank=True, related_name="industry_set", through="CaseStudyIndustries")
class CaseStudyAdmin(HaPageAdmin):
inlines = (Foo, Bar,)
很高兴填写任何空白,并提前感谢。
解决方案
似乎在子类ContentTypedAdmin
中Mezzanine
添加了ManyToMany
两次字段。我还没有调查到底为什么会发生。一个可能的解决方案是将最后两行更改ContentTypedAdmin.__init__()
为:
if not hasattr(field, "translated_field") and field.name not in self.fieldsets[0][1]["fields"]:
self.fieldsets[0][1]["fields"].insert(3, field.name)
推荐阅读
- sql - 我们可以在部署 SQL DACPAC 文件时忽略架构级别过滤吗?
- qt - 在 Qt 中知道布局名称时查找布局
- vba - 在 Powerpoint VBA 中,如何让嵌入的视频开始播放?
- python - Python:在列表中标记重复项
- python - conda create --copy 正在使用符号链接创建环境
- javascript - 如何将 Firebase 身份验证数据添加到 React 中的 firestore 集合?
- python-3.x - 打印列表名称,而不是列表
- ios - 关于“gamePlayerID”的 AppStoreConnect“应用程序隐私”如何回答
- visual-studio-code - vscode 扩展:TreeDataProvider 不一致
- javascript - Chart Js - 条形图 - 如何使标签的第一行加粗?