Django: Rendert vererbte (verschachtelte) Werte als Liste in forms.ModelForm

8

Ich versuche, eine Dropdown-Liste in meinem Formular anzuzeigen, von meinem Modell 'TipoDocumento' (ich muss die Spalte 'nombre_corto' als Liste anzeigen).

1) Mein Modellname ist "Cocinera", Cocinera erbt von meinem Modell "Usuario".
2) "Usuario" erbt sein "Documento" -Feld von meinem Modell "Documento".
3) Das Modell "Documento" erbt das Feld "tipo_documento" von "TipoDocumento".

Aber ich kann "tipo_documento" nicht als Liste von meinem "Cocinera" -Modell über mein "Cocineraform" -Formular wiedergeben. Ich erhalte einen Fehler, der am Ende detailliert ist.

Alle meine Modelle sind in der "Nukleo" -App. Nur das Formular, das gerendert wird, ist in meiner anderen App 'app_administrador'.

===============================

Nucleo - Die App heißt nur Nukleo

===============================

MODELLE:

Modell 'TipoDocumento'

%Vor%

Modell 'Documento'

%Vor%

Modell 'Usuario':

%Vor%

Modell 'Cocinera':

%Vor%

===============================

app_administrator

===============================

Mein Formular

%Vor%

Verwandte Frage: Nach diesem Verwenden Sie Django ModelChoice Feld zu Pulldown zu Lookup-Tabelle erstellen?

Ich habe hinzugefügt:

%Vor%

Aber trotzdem, wenn ich meine App starte, bekomme ich:

%Vor%     
Omar Gonzales 22.11.2017, 21:30
quelle

2 Antworten

2

Also, ich habe die Antwort gefunden: Ich musste mit zwei Formen arbeiten, nicht nur mit einer, und rendere beide in der 'Vorlage'.

Schritte:

1.- Ich musste neben dem "CocineraForm" ein zusätzliches Formular "DocumentoForm" erstellen.

%Vor%

2.- Ich musste alle Felder beider Formulare validieren. Erstellen Sie eine "Documento" -Instanz aus dem Formular "DocumentoForm", ohne sie in der DB zu speichern (commit = 'False'). Und ich musste diese "Documento" -Instanz dem "cocinera" -Modell als Feld hinzufügen. Genau hier sollte ich die 'CocinerForm' mit '.save ()' speichern.

%Vor%

3.- Arbeiten Sie mit 2 Formularen in der Vorlage.

%Vor%     
Omar Gonzales 25.11.2017, 23:53
quelle
2

Natürlich können Sie wie gewohnt ein zusätzliches Feld in das Formular einfügen.

Sie dürfen jedoch das Nicht-Modellfeld 'tipo_documento' nicht in die Liste der Felder einfügen, da dies nur für die in Ihrem Modell definierten Felder gilt.

Du solltest also gut sein mit:

%Vor%

Beachten Sie das fehlende 'tipo_documento' aus der Feldliste.

    
normic 25.11.2017 00:44
quelle