0

ich zwei Modelle, mit ManyToMany Beziehungen:Django InlineAdmin für ManyToMany Feld, das nicht explizit genannt hat durch

App1:

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

App2:

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

Jetzt, auf der Admin-Ansicht von Bar, würde ich gerne foos präsentieren. Ich kann nicht einfach foos als ManyToMany Feld auflisten, ich bekomme eine Fehlermeldung.

Also versuche ich zu tun:

class BarFooInline(admin.TabularInline): 
    model = Bar_foos 

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

admin.site.register(Bar, BarAdmin) 

Ich habe den Namen Bar_foos durch Blick in die Meta von Bar. Bar.foos.through ergibt das als eine richtige models.Bar_foos. Aber da ich das nicht ausdrücklich genannt habe, ist es nicht wirklich in der models.py, also kann ich das nicht importieren. Was soll ich machen?

Ich möchte nicht durch jetzt erstellen, weil ich bereits eine ganze Reihe von Assoziationsinformationen in der Tabelle habe, und ich habe das Gefühl, dass nicht magisch Daten in die Tabelle der neu benannten Assoziationseinheit migriert werden würden (https://mounirmesselmeni.github.io/2013/07/28/migrate-django-manytomany-field-to-manytomany-through-with-south/).

Außerdem kann ich das Feld ManyToMany nicht von App2 zu verschieben.

Antwort

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

Ja, es kompiliert so! Es ist eine andere Sache, dass es viele Objekte gibt, dass der MySQL-Client nicht genügend Speicher hat, also muss ich eine andere Lösung finden. –