Ein vollständiges Many-to-One-Beispiel mit Flask, WTForm, SQLAlchemy und Jinja2

8

Hier ist mein HTML-Dropdown-Menü. Der Wert ist der Primärschlüssel der Kindtabelle.

%Vor%

Ich muss Post.category_id mit dem Wert integer 1 anstelle von "Category Number One" aktualisieren. Hier ist mein Code.

%Vor%

Ich habe versucht, ...

zu machen %Vor%

Nun wäre das nicht nett!

    
jwogrady 08.04.2014, 05:27
quelle

1 Antwort

7

Ich habe es herausgefunden! Hier ist meine Lösung. Hoffentlich hilft dieses Writup dem nächsten Typen.

Die Lösung besteht darin, dass die Erweiterung die Arbeit für Sie erledigt! Hier ist ein Arbeitsbeispiel der WT Forms sqlalchemy Erweiterung mit Flask, WTForm, SQLAlchemy und Jinja2. Kurz gesagt, müssen Sie sich nicht um die Kind-ID kümmern, da die Erweiterung automatisch dafür sorgt. Das bedeutet, wenn Sie mit SQLAlchemy Parent und Child-Modellen in einer Eins-zu-viele-Beziehung arbeiten, müssen Sie sich NUR mit dem PARENT befassen.

MODELL

Stellen Sie zuerst sicher, dass Ihr Modell und Ihre Beziehungen korrekt sind. Beachten Sie in meinem Beispiel, wie die Beziehungen definiert sind und dass die init nur über CATEGORY ... NOT CATEGORY_ID verfügt. Mein Fehler war, dass ich das CATEGORY_ID-Feld meines Modells ausfüllen würde. Nee. Die Erweiterung macht es für Sie. In der Tat, wenn Sie versuchen, es manuell zu tun, wie ich es getan habe, wird überhaupt nicht funktionieren ....

%Vor%

Zweitens, überprüfen Sie das Formular .... HINWEIS Ich verwende das wtfrom sqlalchmey QuerySelectedField und das Category_ID Feld fehlt ...

FORM

%Vor%

Jetzt die FLASK Routing- und View-Logik ... Hinweis in Beitrag NO category_id wieder! Nur Kategorie nur !!!

ROUTEN / ANSICHT

%Vor%

Schließlich die Vorlage. Rate mal was, wir erzeugen nur das form.category Feld !!!

SCHABLONE

%Vor%

Das Ergebnis ... Diese Lösung verwendet das Kategoriemodell korrekt als Nachschlagetabelle und ordnet die Post-Zeilen korrekt zu, indem die Category PK-Integer in das Posts Category_Id-Feld geschrieben werden. Yeeeehaww!

    
jwogrady 21.12.2014, 19:44
quelle