Форма Django выпадающий список номеров - PullRequest
24 голосов
/ 14 января 2012

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

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?

Ответы [ 2 ]

52 голосов
/ 14 января 2012

Вы ищете 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 голосов
/ 23 апреля 2017

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

{% 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 dropdown 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...