0

我有兩個型號,與ManyToMany關係:Django的InlineAdmin爲多對多的字段,它沒有明確指定的通過

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) 

我看通過了名稱Bar_foos進入酒吧的元。 Bar.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

回答

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

+0

是的,它編譯的方式!另一件事是有很多對象,MySQL客戶端內存不足,所以我必須找到其他解決方案。 –