2012-01-14 22 views
16

i django için yeni ve i ne ben bilmek istiyorum djangoDjango formu açılır liste

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 

gelen formlar modülünü kullanarak bir form yapabilir, basit bir form yapmak istediğiniz doküman göre aydaki bir açılır liste nasıl oluşturulur, örneğin 1 ila 31 arası?

Bazıları form şablonunda javascript kullanarak yapmışlardır, bu django'da yapılabilir mi?

cevap

38

Varsayılan olarak select html öğesi oluşturan bir ChoiceField. 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

serin mümkün, listenin başında ("*", "Her") gibi bir şey bir daha fazla değer katmaktır. – krisdigitx

+4

Elbette, sadece listeye ekleyin :) 'seçenekler = [(" * "," Her ")] + [(x, x) x aralığında (1, 32)]' –

+0

bu yuji için teşekkürler! – krisdigitx

-1

Eğer manuel alanları işlemek için seçerek başlayabilirsiniz. Basit bir örnek: -

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

Bu o zaman (W3C açılan css kopyalanmış) listesinde bir açılan oluşturmak için Alakalı sınıfını uygulamak zorunda herhangi stil olmadan formu verecek: -

<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> 
iki birleştirerek

: - çalıştı

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