2013-04-13 11 views
13

मैं इस फार्म है:प्रारंभिक मूल्य को नजरअंदाज कर दिया

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> 

.. जबकि मुझे उम्मीद है कि यह "डिफ़ॉल्ट" या "सक्रिय" विकल्प होगा। कृपया ध्यान दें कि उपयोगकर्ता नाम फ़ील्ड सही ढंग से प्रारंभ किया गया है। समस्या का पता लगाने के लिए मैं आगे की जांच कैसे कर सकता हूं?

उत्तर

12

आप initial डेटा में टपल के बजाय option मूल्य पारित करने के लिए की जरूरत है:

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

क्या होगा यदि आप गतिशील दृश्य की आर्ग के आधार पर विकल्प पास करना चाहते हैं? – radtek

+1

यह एक अच्छा सवाल है। यही वह है जो मैं आज में फंस गया। क्या आपके पास इसका कोई समाधान है? – user1159517

संबंधित मुद्दे