Django dynamisches Formularbeispiel

9

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.

  • Wie rufe ich die _ init _Funktion in der Ansicht auf, um diese Felder hinzuzufügen?
  • Wenn ich Javascript verwende, um das Feld dynamisch hinzuzufügen, wie rufe ich init auf, damit ich es korrekt mit Django validieren kann, wenn ich das Formular POST anlege?
afshin 27.05.2011, 15:39
quelle

2 Antworten

8

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.

%Vor%

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.

    
Bryce Siedschlaw 27.05.2011, 16:25
quelle
-12

[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.

    
jammon 27.05.2011 16:03
quelle