2016-04-08 13 views
2

ich erstellen Sie die folgenden Modelle registrieren:Django Admin ManyToMany Zwischenmodell

class Child(models.Model): 
    some_var = models.CharField() 

class Parent(models.Model): 
    m2m = models.ManyToManyField(Child) 

Django erstellt automatisch ein Zwischenmodell im Hintergrund genannt ParentChild. Jetzt möchte ich dieses Zwischenmodell im Django Admin registrieren. Ist das möglich? Wenn das so ist, wie? Oder funktioniert es nur mit through="ThroughModel"?

+0

rechts, Django so angegeben https://docs.djangoproject.com/es/1.9/topics/db/models/#extra-fields-on-many-to-many-relationships und arbeitet in admin https://docs.djangoproject.com/de/dev/ref/contrib/admin/#working-with-many-to-many-intermediary-models –

Antwort

2

Sie müssen durch Modell dafür verwenden. Grundsätzlich Django erstellen nur Zwischentabelle in db, nicht Modell. Sie müssen also die Model-Klasse definieren, um sie im Admin zu registrieren.

https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#working-with-many-to-many-intermediary-models

+0

Schade, ich hatte gehofft, das Through-Modell zu vermeiden. Vielen Dank! –

+0

@ ÖzerS. Sie können eine Modellklasse für eine bereits vorhandene Tabelle definieren. Erstellen Sie das 'ParentChild'-Modell, übergeben Sie es als' through' kwarg, erstellen Sie eine Migration und fälschen Sie sie dann. Es könnte ein bisschen schwierig sein - aber am Ende werden Sie konsistente Migrationen erhalten und Ihre Daten nicht verlieren. – crash843

Verwandte Themen