我从Django 1.10升级到1.11,现在我以前使用的两个模型都导致错误。它们是仅有的两个具有ManyToManyField并包含related_name属性的模型。我还有一个没有ManyToManyFieldrelated_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)

关于python - 使用ManyToManyField时字段重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54336787/

10-12 17:01