2016-04-19 208 views
5

ChoiceField選項鑑於在Django一個ChoiceField渲染在Django模板

fruits = ChoiceField(label="Fruits", choices=(('A', 'Apple'), 
    ('B', 'Banana'), ('C', 'Cherry') 
) 

如何顯示在Django模板的形式選項1.9?例如,我嘗試以下,但無法顯示錶單數據:

<table class="table table-bordered table-condensed"> 
     <tr> 
     <th> 
     <label for="{{form.fruits.id_label}}"> 
      {{form.fruits.label}} 
     </label> 
     </th> 
     <td>{% for value, displayable in form.fruits.choices %} 
      <option value="{{value}}">{{displayable}}</option> 
      {% endfor %} 
     </td> 
     </tr> 
    </table> 
+0

真正簡單的閱讀文檔https://docs.djangoproject.com/en/1.9/ref/forms/widgets/#selectmultiple – rakwen

+0

這個環節我給解釋所有你婉知道的客戶呈現choiceField!祝你好運 ! – rakwen

+0

@rakwen我閱讀文檔,但仍無濟於事。也許你可以幫助這個呢? – bryansis2010

回答

3

默認情況下,Django會爲我們提供了一個簡單的下拉列表,選擇場的可視化表示。只需在視圖中創建並創建一個表單實例,然後在上下文中傳遞它。下面是一個例子,

比方說我們的示例模型,

gender = (
    ('x', 'Male'), 
    ('y', 'Female'), 
    ) 

class User(models.Model): 
     gender = models.CharField(max_length=60, blank=True, default='',choices=gender,verbose_name="gender") 

和我們的模型形式,

class UserForm(forms.ModelForm): 

    def __init__(self, *args, **kargs): 
     super(UserForm, self).__init__(*args, **kargs) 

    class Meta: 
     model = User 
     fields = '__all__' 

只需創建視圖中的窗體的實例,通過它在上下文:

def my_view(request): 
form = UserForm() 
return render_response('template.html',{'form': form}) 

然後使用{{form.my_choice_field}}將其顯示在模板中。

<div class="col-md-4"> 
    <div class="form-group"> 
    <label>Gender</label> 
    <select name="gender" class="selectpicker" data-title="Select Gender" data-style="btn-default btn-block" data-menu-style="dropdown-blue"> 
    {% for x,y in form.fields.gender.choices %} 
     <option value="{{ x }}"{% if form.fields.gender.value == x %} selected{% endif %}>{{ y }}</option> 
    {% endfor %} 
    </select> 
    </div> 
</div>