2016-04-19 165 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>