Ich habe ein Django-Formular mit einem Zwei-Wahl-Optionsfeld-Element. Ich möchte, dass das Formular mehr oder weniger wie folgt rendert:
%Vor%Mit anderen Worten, ich möchte die beiden Auswahlmöglichkeiten für Radioknöpfe aufteilen. Wie mache ich das? Mit dem standardmäßigen form.as_table-Rendering werden die Auswahlmöglichkeiten direkt nebeneinander gezeichnet, was ich nicht möchte.
(Entschuldigung für NASCAR und Opernenthusiasten.)
Ich habe ein bisschen gegraben und in der Antwort auf diesen ähnlichen Beitrag eine Spur gefunden Das deutet auf einen etwas veralteten Beitrag in django-users
Entlehnung von Code aus der as_widget () Methode in forms.py Ich habe eine Methode entwickelt, die ich zu meinem Formular hinzufügen kann, um die Auswahl des RadioSelect-Widgets als HTML zu erhalten.
%Vor%Dann können Sie in der Vorlage auf einzelne Optionsfelder wie folgt zugreifen:
%Vor%oder
%Vor%Ich bin mir ziemlich sicher, dass das eine schlechte Idee ist. Es wird wahrscheinlich irgendwann aufhören zu arbeiten, wenn sich der Django entwickelt. Es verstößt gegen DRY, indem Code von as_widget () kopiert wird. (TBH, ich habe mir nicht die Zeit genommen, den Code von as_widget vollständig zu verstehen) Ich benutze es nur als temporären Hack. Vielleicht gibt es einen besseren Weg, der benutzerdefinierte Template-Tags beinhaltet. Wenn ja, lass es mich wissen.
Das RadioSelect-Widget rendert seine Ausgabe standardmäßig in eine ungeordnete Liste.
%Vor%Wird ausgegeben:
%Vor%Damit wird jede Radio-Wahl in einer eigenen Zeile wiedergegeben. Sie müssen wahrscheinlich etwas CSS hinzufügen, um das Rendering genau so zu gestalten, wie Sie es möchten, aber das sollte Ihnen die Struktur geben, die Sie brauchen. Natürlich können Sie den HTML-Code per Hand schreiben und einfach tun ...
%Vor%... aber ich schreibe lieber mein HTML von Hand.
Tags und Links django forms radio-button