Подтвердить что ты не робот

Начальное значение для поля выбора формы django игнорируется

У меня есть эта форма:

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

Доступны следующие варианты:

E = 'e'
A = 'a'
SOURCES_CHOICES = (
                  (A, 'A'),
                  (E, 'E'),
                  )

Вид:

form = UserUsesSourceForm(initial={"username":request.user.username, 'provider':SOURCES_CHOICES[1]})return render_to_response('update_datasource.html', context_instance=RequestContext(request, params))

И шаблон:

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

Проблема заключается в том, что даже если начальное значение установлено правильно, и я могу проверить его в отладке (то есть, форма поле "поставщик" начальное значение кортежа я хочу), окончательный HTML всегда показывать первый элемент поле выбора:

<select name="provider" id="id_provider">
<option value="A">A</option>
<option value="E">E</option>
</select>

.. пока я ожидаю, что у него будет опция "по умолчанию" или "активна". Обратите внимание, что поле имя пользователя правильно инициализировано. Как я могу продолжить исследование, чтобы узнать, где проблема?

4b9b3361

Ответ 1

Вам нужно передать значение option вместо кортежа в данных initial:

form = UserUsesSourceForm(
    initial={'username':request.user.username,
             'provider':SOURCES_CHOICES[1][0]})