Django - Wie funktioniert ModelChoiceField queryset?

8

Ich habe ein Formular mit einem ModelChoiceField, und ich möchte eine Tabelle von meiner DB laden. Wenn ich dieses Abfrage-Set für die Init-Datei meines Formulars verwende, funktioniert das form.is_valid meiner Ansicht einwandfrei:

%Vor%

Dieser Code zeigt die Liste einer ID auf dem ModelChoiceField, aber was ich brauche, ist die Liste der Kategorien anzuzeigen. Also ich benutze:

%Vor%

Aber mit diesem Code .is_valid nicht validieren und ich empfange einen Formularfehler: "Wählen Sie eine gültige Wahl. Diese Wahl ist nicht eine der verfügbaren Auswahlmöglichkeiten." Einige Hinweise darauf, was das Problem sein könnte?

MODELL

%Vor%

FORM

%Vor%     
Adrian Lopez 24.03.2013, 19:55
quelle

1 Antwort

13

Verwenden Sie nicht values_list , (oder values ), ModelChoiceField benötigt tatsächliche Modellobjekte.

%Vor%

ModelChoiceField verwendet die Primärschlüssel der Objekte für die Validierung und ihre Unicode-Darstellung für die Anzeige. Daher müssen Sie in Ihrem Modell die Konvertierung in Unicode definieren:

%Vor%

ModelChoiceField-Dokumentation

  

Die Methode __unicode__ des Modells wird aufgerufen, um String-Repräsentationen der Objekte zur Verwendung in den Feldauswahlmöglichkeiten zu generieren;

    
Pavel Anossov 24.03.2013, 20:07
quelle