2012-09-25 14 views
5

Ich möchte einen Quiz in Quiz in Django erstellen.So erstellen Sie ein Formular "Füllen Sie die Lücken aus" in Django

Beispiel Frage ist "Platzieren Sie Ihre Antworten __ und __."

Also im Grunde möchte ich eine Ausgabe, die "__" Felder durch Eingabefelder ersetzen würde.

Ich möchte auch, dass die Eingabefelder den gleichen "Namen" haben. Beispiel:

<input id="id_1" type="text" name="blank[]" /> 
<input id="id_2" type="text" name="blank[]" /> 

Die Anzahl der leeren Felder ist (möglicherweise) unendlich. Wie geht man mit django.forms vor?

Vielen Dank.

+1

werden Sie wissen, Wie viele Leerzeichen benötigen Sie zur Instanziierungszeit? –

+4

Verwenden Sie Formsets: https://docs.djangoproject.com/en/dev/topics/forms/formsets/ –

+0

Die Anzahl der leeren Felder ist unbekannt. Es hängt von der Anzahl von "__" der gegebenen Frage ab. Schauen Sie sich jetzt die Formsets an und sehen Sie, wie ich sie verwenden kann. Vielen Dank! – CiB

Antwort

0

Sie haben eine Liste von Feldern, auf denen Sie Quiz rendern müssen, wie ich es verstehe. mit Liste So wie folgt aussehen:

questions = (
    ('Place your 1 answers %s and %s.', ('field_1_1', 'field_2_2')), 
    ('Place your 2 answers %s and %s.', ('field_2_1', 'field_2_2')), 
) 

Sie können wie diese Form für jedes Feld erstellen:

class QuizzForm(forms.Form): 
    def __init__(self, *args, **kwargs): 
     super(QuizzForm, self).__init__(*args, **kwargs) 
     for question in questions: 
      for field in question[1]: 
       self.fields[field] = forms.ChoiceField() 

Und Zugang Felder nach Post similiar dazu:

if form.is_valid(): 
    for question in questions: 
     for field in question[1]: 
      answer = form.cleanded_data.get(field) 
Verwandte Themen