2012-01-14 2 views
16

Я новичок в Джанго и я хочу, чтобы сделать простую форму, в соответствии с доком я могу сделать форму, используя модуль формы из ДжангоДжанго формы выпадающий список номера

from django import forms 

class CronForm(forms.Form): 
    name = forms.CharField(max_length=100) 
    email = forms.EmailField(required=False, label='Your e-mail address') 
    message = forms.CharField(widget=forms.Textarea) 

    def clean_message(self): 
     message = self.cleaned_data['message'] 
     num_words = len(message.split()) 
     if num_words < 4: 
      raise forms.ValidationError("Not enough words!") 
     return message 

то, что я хочу знать, как создать выпадающий список дней в месяце, т. е. от 1 до 31?

некоторые из них сделали это с помощью javascript в их шаблоне формы, это можно сделать в django?

ответ

38

Вы ищете ChoiceField, который по умолчанию является элементом select html. https://docs.djangoproject.com/en/dev/ref/forms/fields/#choicefield

class CronForm(forms.Form): 
    days = forms.ChoiceField(choices=[(x, x) for x in range(1, 32)]) 
+0

, который работал, можно ли добавить еще одно значение в начале списка, что-то вроде («*», «Каждый»). – krisdigitx

+4

Конечно, просто добавьте его в список :) 'choice = [(" * "," Every ")] + [(x, x) для x в диапазоне (1, 32)]' –

+0

спасибо за это yuji! – krisdigitx

-1

вы можете начать с выбора для визуализации полей Мануалы. Простого примера: -

{% for field in form %} 
     <div class="fieldWrapper"> 
      {{ field.errors }} 
      {{ field.label_tag }} {{ field }} 
      {% if field.help_text %} 
       <p class="help">{{ field.help_text|safe }}</p> 
      {% endif %} 
     </div> 
    {% endfor %} 

Это сделает форму без какого-либо стиля, то вы должны применить класс Релевента для создания выпадающего списка (копируетесь из w3c ниспадающего CSS): -

<div class="dropdown"> 
    <button class="btn btn-default dropdown-toggle" type="button" id="menu1" data-toggle="dropdown">Tutorials 
    <span class="caret"></span></button> 
    <ul class="dropdown-menu" role="menu" aria-labelledby="menu1"> 
     <li role="presentation"><a role="menuitem" tabindex="-1" href="#">HTML</a></li> 
     <li role="presentation"><a role="menuitem" tabindex="-1" href="#">CSS</a></li> 
     <li role="presentation"><a role="menuitem" tabindex="-1" href="#">JavaScript</a></li> 
     <li role="presentation" class="divider"></li> 
     <li role="presentation"><a role="menuitem" tabindex="-1" href="#">About Us</a></li> 
    </ul> 
    </div> 
</div> 

комбинируя два: - прохладное

<div class="dropdown"> 
     <button class="btn btn-default dropdown-toggle" type="button" id="menu1" data-toggle="dropdown">Days 
      <span class="caret"></span></button> 
     <div class="fieldWrapper"> 
      <ul class="dropdown-menu" role="menu" aria-labelledby="menu1"> 
       {% for field in form %} 
        <li class="fieldWrapper"> 
         {{ field.errors }} 
         {{ field.label_tag }} {{ field }} 
         {% if field.help_text %} 
          <p class="help">{{ field.help_text|safe }}</p> 
         {% endif %} 
        </li> 
       {% endfor %} 
      </ul> 
     </div> 
    </div> 
Смежные вопросы