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%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.
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%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 .
Tags und Links python django django-forms