2013-04-13 2 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> 

문제는 초기 값이 올바르게 설정되어 있고 디버그에서 테스트 할 수 있습니다 (즉, "provider"필드의 초기 값이 원하는 튜플 인 경우), 최종 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