用于ManyToMany字段的Django InlineAdmin没有明确命名的

时间:2016-03-30 23:57:58

标签: django python-2.7 django-models django-admin manytomanyfield

我有两个模型,ManyToMany关系:

App1

class Foo:
    fld = models.CharField(null=True, blank=True)

App2

class Bar:
    foos = models.ManyToManyField(Foo, blank=True)

现在,在Bar的管理员视图中,我想提交foos。我不能简单地将foos列为ManyToMany字段,我收到错误消息。

所以我试着这样做:

class BarFooInline(admin.TabularInline):
    model = Bar_foos

class BarAdmin(admin.ModelAdmin):
    model = Bar
    inlines = [BarFooInline, ]

admin.site.register(Bar, BarAdmin)

我通过查看Meta of Bar得到了名字Bar_foosBar.foos.through将其作为正确的models.Bar_foos。但由于我没有明确地命名通过,它并不是真的在models.py中,所以我无法导入它。我该怎么办?

我现在不想创建一个,因为我已经在表格中有一大堆关联信息,我感觉神奇的数据不会迁移到新命名的关联中实体的表格(https://mounirmesselmeni.github.io/2013/07/28/migrate-django-manytomany-field-to-manytomany-through-with-south/)。

此外,我无法将ManyToMany字段从App2移至App1

1 个答案:

答案 0 :(得分:2)

class BarFooInline(admin.TabularInine):
    models = Bar.foos.through

class BarAdmin(admin.ModelAdmin):
    model = Bar
    inlines = [BarFooInline]
    exclude = ['foos']

Working with many-to-many models