2012-01-14 20 views
16

soy nuevo en Django y quiero hacer una forma sencilla, de acuerdo con el documento que puedo hacer un formulario utilizando el módulo formas de DjangoDjango lista desplegable de números

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 

lo que quiero saber es cómo crear una lista desplegable de días en el mes, es decir, del 1 al 31?

Algunos lo han hecho mediante javascript en su plantilla de formulario, ¿se puede hacer esto en django?

Respuesta

38

Está buscando ChoiceField que se presenta como un elemento select html de forma predeterminada. 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

que funcionaba, es posible añadir un valor más al comienzo de la lista, algo así como ("*", "Todos"). – krisdigitx

+4

Claro, simplemente agrégalo a la lista :) 'choices = [(" * "," Every ")] + [(x, x) for x in range (1, 32)]' –

+0

gracias por ese yuji! – krisdigitx

-1

puede empezar eligiendo para hacer que los campos manualy. Un ejemplo sencillo: -

{% 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 %} 

Esto hará que la forma sin ningún estilo entonces usted tiene que aplicar la clase relevante para crear una lista desplegable (copiada de css desplegable W3C): -

<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> 

combinación de los dos: - cool

<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> 
Cuestiones relacionadas