Render ChoiceField Options in Django Template

Considering ChoiceField in Django

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

How to display form parameters in Django Templates in 1.9? For example, I tried the following, but cannot display the form data:

  <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> 
+5
source share
1 answer

By default, Django provides us with a simple drop-down list as a visual representation of the selection field. Just create an instance of the form in your presentation, pass it in context. Here is an example

let's say an example of our model,

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

and our model form,

 class UserForm(forms.ModelForm): def __init__(self, *args, **kargs): super(UserForm, self).__init__(*args, **kargs) class Meta: model = User fields = '__all__' 

Just create an instance of the form in your view, pass it in context:

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

then display it in the template using {{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> 
+3
source

Source: https://habr.com/ru/post/1247450/


All Articles