Automatisches Generieren von Formularfeldern für ein Formular in django

8

Ich habe einige Modelle und möchte aus diesen Daten ein Mehrfachauswahlformular generieren. Also würde das Formular einen Eintrag für jede Kategorie enthalten und die Auswahlmöglichkeiten wären die Fähigkeiten in dieser Kategorie.

models.py

%Vor%

Gibt es eine Möglichkeit, die Formularfelder automatisch zu generieren? Ich weiß, dass ich manuell einen 'SkillCategory'-Eintrag im Formular für jede SkillCategory hinzufügen kann, aber der Grund dafür ist, dass Skills und Skillkategorien frei editiert werden können.

Ich möchte so etwas tun: (Ich habe es versucht, aber es hat nicht funktioniert, erinnere mich nicht an den genauen Fehler ...)

forms.py

%Vor%

LÖSUNG

Dies erstellt einen Formularfeldeintrag unter Verwendung von SkillCategory.name und weist Optionen wie in Skill zu. field_name / display_name werden verwendet, um Probleme mit nicht-ascii Kategorienamen zu vermeiden.

forms.py

%Vor%     
monkut 11.09.2009, 05:51
quelle

3 Antworten

1

Schauen Sie sich dynamische Formen in Django an, von b-list.org und uswaretech.com . Ich habe Erfolg gehabt, diese Beispiele zu verwenden, um Formularinhalt von Modellen dynamisch zu erstellen.

    
John Paulett 11.09.2009, 13:15
quelle
2

Okay, Sie können Felder aus forms.Form nicht so einstellen, aus Gründen, die offensichtlich werden, wenn Sie DeclarativeFieldsMetaclass , die Metaklasse von forms.Form (aber nicht von forms.BaseForm). Eine Lösung, die in Ihrem Fall vielleicht übertrieben ist, aber ein Beispiel dafür, wie dynamische Formkonstruktionen durchgeführt werden können, ist etwa so:

%Vor%     
ozan 11.09.2009 08:04
quelle
1

Was Sie wollen, ist ein Formset. Dadurch erhalten Sie eine Reihe von Zeilen, von denen jede einem bestimmten Skill zugeordnet ist.

Weitere Informationen finden Sie in der Formset-Dokumentation und der Seite zum Generieren von Formsets für Modelle .

    
Daniel Roseman 11.09.2009 06:39
quelle

Tags und Links