Ich habe eine einfache Anforderung, um eine dynamische Form in Django zu erstellen - ich habe viele Beispiele gesehen, aber sie scheinen unvollständig zu sein, oder erfordern umfangreichere Kenntnisse von Python und Django als ich! Keine zeigt, wie der dynamische Teil des Beispiels aufgerufen werden sollte:
Dies ist die Formularklasse mit Q1 und Q2 - Ich platziere eine Schaltfläche auf dem Formular, um eine weitere hinzuzufügen Feld namens Q3 - und dann Q4, wenn erneut gedrückt: Ich denke, ich habe die Funktion init halb richtig:
%Vor%Ich möchte eine Schaltfläche in das Formular einfügen, um eine weitere hinzuzufügen Feld heißt Q3 und dann Q4, wenn erneut gedrückt wird.
Um Ihre Frage zu beantworten: Wenn Sie Ihr Formular initialisieren, ruft es init () auf. Bsp .: form = testform()
. Das initialisiert dein Formular. Was ich hier tun würde, ist etwas Javascript hinzuzufügen, um diese neuen Felder zu schaffen. Ich bin mir nicht sicher, wie vertraut Sie mit Javascript sind, aber ich gehe davon aus, dass Sie das selbst herausfinden können.
Was die Validierung betrifft, kann dies im Formular erfolgen. Zunächst möchten Sie jedoch sagen, dass Sie mit init()
weitere Felder hinzugefügt haben.
Sie können Ihr Feld beliebig benennen, es muss nicht TestCharField sein. Stellen Sie sicher, dass Sie es an beiden Orten umbenennen. Dadurch können Sie so viele Felder erstellen, wie Sie möchten. Lassen Sie mich wissen, ob dies für Sie nicht ganz funktioniert.
[Bearbeiten] Das war nicht die beste Antwort, die Antwort von Bryce ist viel besser. Ich nahm die Frage wörtlich und gab eine Lösung für 4 Felder, wo eine wirklich dynamische Form eine viel elegantere Lösung gewesen wäre.
Bitte werfen Sie einen Blick auf Bryce 'Antwort.
Ich denke, ich würde das Formular mit allen möglichen Feldern definieren und sie mit javascript anzeigen / verbergen:
%Vor%HTML:
%Vor% (mit JQuery)
Und zeigen Sie die Felder mit Ihren Tasten ähnlich.
Tags und Links django django-forms django-views