2016-04-19 13 views
5

Dato un ChoiceField in DjangoRender opzioni ChoiceField in Django modello

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

Come faccio a visualizzare le opzioni di modulo in modelli di Django in 1.9? Per esempio, ho provato quanto segue, ma non in grado di visualizzare i dati del modulo:

<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

molto semplice leggere questo documento https://docs.djangoproject.com/en/1.9/ref/forms/widgets/#selectmultiple – rakwen

+0

questo link dò spiegare tutto quello che wan sapere su personalizzato rendere choiceField! in bocca al lupo ! – rakwen

+0

@rakwen ho letto la documentazione ma ancora inutilmente. Forse potresti aiutarci con questo? – bryansis2010

risposta

3

Per impostazione predefinita, Django ci fornisce un semplice elenco a discesa come una rappresentazione visiva del campo scelta. Basta creare e un'istanza del modulo nella tua vista, passarla nel contesto. Ecco un esempio,

diciamo il nostro modello di esempio è,

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

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

e il nostro modello di formulario,

class UserForm(forms.ModelForm): 

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

    class Meta: 
     model = User 
     fields = '__all__' 

Basta creare un'istanza del modulo nella vista, passarlo nel context:

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

e quindi visualizzarlo nel modello utilizzando {{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>