2012-09-25 13 views
5

Chcę utworzyć quiz typu "wypełnij puste pola" w Django.Jak utworzyć formularz "wypełnij puste pola" w Django

Przykładowe pytanie to "Umieść swoje odpowiedzi __ i __."

Tak więc, zasadniczo, chcę dane wyjściowe, które zastąpią pola "__" pola wprowadzania.

Również chcę, aby pola wejściowe miały tę samą "nazwę". Przykład:

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

Liczba pustych pól jest (może być) nieskończona. Jak to zrobić za pomocą django.forms?

Dziękuję.

+1

będziesz wiedzieć ile pustych pól potrzebujesz podczas tworzenia instancji? –

+4

Użyj formularzy: https://docs.djangoproject.com/en/dev/topics/forms/formsets/ –

+0

Liczba pustych pól jest nieznana. To zależy od liczby "__" danego pytania. Spójrz teraz na formularze i zobacz, jak mogę ich użyć. Dzięki! – CiB

Odpowiedz

0

Masz listę pól, na których musisz renderować quiz, jak rozumiem. Więc z listy wygląda tak:

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')), 
) 

Można utworzyć formularz dla każdego pola jak poniżej:

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() 

i dostęp polach po postu podobne do tego:

if form.is_valid(): 
    for question in questions: 
     for field in question[1]: 
      answer = form.cleanded_data.get(field) 
Powiązane problemy