2016-08-02 6 views
0

Ich fange einfach an, Django zu lernen, aber ich kann kein einfaches Beispiel finden, ohne Datenbank zu benutzen. Ich habe einen gefunden, aber als ich es auf meinem Projekt versucht habe, funktioniert das einfach nicht. Ich brauche Hilfe, weil ich jetzt keine Ahnung habe, was falsch ist.Django bildet ChoiceField. Meine Auswahl zeige keine Optionen an

forms.py

MY_CHOICES = (
('1', 'Option 1'), 
('2', 'Option 2'), 
('3', 'Option 3'), 
) 

class MyTestForm(forms.Form): 
    my_choice_field = forms.ChoiceField(choices=MY_CHOICES) 

views.py

def my_view(request): 
    form = MyTestForm() 
    return render_response('/home/.../test.html',{'form': form}) 

test.html

<div> 
    <select> 
    {% for choice in form.my_choice_field %} 
     <option>{{choice.1}}</option> 

    </select> 
    {% endfor %} 

</div> 

Und diese zeigen nur leere Dropdown-Liste. Danke für jede Hilfe!

+3

Wenn Ihr reales Beispiel so einfach ist wie der obige Code, müssen Sie möglicherweise die Optionen nicht durchlaufen. Die Verwendung von '{{form.my_choice_field}}' könnte tun, was Sie wollen. – Alasdair

Antwort

3

Es sollte form.my_choice_field.choices nicht form.my_choice_field

<div> 
    <select> 
    {% for choice in form.fields.my_choice_field.choices %} 
     <option>{{choice.1}}</option> 
    {% endfor %}  
    </select> 
</div> 
+0

zeigen immer noch nur leere Liste –

+0

@ A.Pie gab es mit Auswahl Tag versauen. Welche @LudwikTrammer behoben. Es war vor '{% endfor%}'. Hast du das angewendet? –

+0

ja, das habe ich gemacht, nachdem ich meine Frage gepostet habe ^^ ' –

0

Der einfachste Ansatz ist sein {{ form.my_choice_field }} zu verwenden, und lassen Django für Sie kümmern sich die Wahl Feld zu machen.

Wenn Sie das Feld wirklich manuell rendern müssen, können Sie über das Attribut field des gebundenen Feldes auf die Auswahlmöglichkeiten zugreifen.

<select> 
{% for choice in form.my_choice_field.field.choices %} 
    <option value="{{ choice.0 }}">{{choice.1}}</option> 
{% endfor %} 
</select> 

Ich war nicht in der Lage eine Referenz für diesen in der Dokumentation zu finden, so dass ich weiß nicht, ob es ein dokumentiertes API ist.

Verwandte Themen