2013-04-13 18 views
13

を無視初期値は、私はこのフォームを持っている

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> 

..私はそれが "デフォルト"または "アクティブ"オプションを持っていると思います。 ユーザー名フィールドが正しく初期化されていることに注意してください。 問題がどこにあるかをさらに調べるにはどうすればよいですか?

答えて

12

あなたはinitialデータに代わりにタプルのoption値を渡す必要があります。

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

何を動的ビューの引数に基づいて選択を渡したい場合は? – radtek

+1

それは大きな質問です。それは私が今日にこだわったものです。そのための解決策はありますか? – user1159517

関連する問題