mam ten formularz:początkowa wartość dla pola wyboru formularza django ignorowane
class UserUsesSourceForm(forms.Form):
# some fields here
username = forms.CharField(label=("Username"), max_length=30, help_text = ("Required"))
provider = forms.ChoiceField(widget=forms.Select(), choices=SOURCES_CHOICES, initial=SOURCES_CHOICES[1])
Dostępne opcje to:
E = 'e'
A = 'a'
SOURCES_CHOICES = (
(A, 'A'),
(E, 'E'),
)
Widok:
form = UserUsesSourceForm(initial={"username":request.user.username, 'provider':SOURCES_CHOICES[1]})return render_to_response('update_datasource.html', context_instance=RequestContext(request, params))
A szablon:
<form action="" method="post">
{% csrf_token %}
{% if form.non_field_errors %}
<p>
{% for error in form.non_field_errors %}
<div class="text-error">{{ error|escape }}</div>
{% endfor %}
</p>
{% endif %}
<div class="control-group">
<label class="control-label" for="id_provider">Data source</label>
<div class="controls">
{{form.provider}}
</div>
</div>
</form>
Problem polega na tym, że nawet jeśli wartość początkowa jest poprawnie ustawiona i mogę przetestować ją w debugowaniu (tj. Początkową wartością pola formularza "dostawca" jest krotka), ostateczny html zawsze pokazuje pierwszy element w wybierz pole:
<select name="provider" id="id_provider">
<option value="A">A</option>
<option value="E">E</option>
</select>
.. gdybym oczekiwał, że ma opcję "domyślną" lub "aktywną". Należy pamiętać, że pole nazwa użytkownika zostało poprawnie zainicjowane. Jak mogę zbadać dalej, aby dowiedzieć się, gdzie jest problem?
Co jeśli chcesz dynamicznie przekazać wyborów w oparciu o args widoku za? – radtek
To świetne pytanie. Właśnie to utknąłem dzisiaj. Czy masz jakieś rozwiązanie? – user1159517