API поля формы? - PullRequest
       7

API поля формы?

2 голосов
/ 09 марта 2009

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

Спасибо

Ответы [ 3 ]

3 голосов
/ 09 марта 2009

Посмотрите на класс для каждого поля в вашей форме:

for f_name, f_type in my_form_instance.fields.items():
    print "I am a ",type(f_type)
    # or f_type.__class__

Это выдаст результат, аналогичный <class 'django.forms.fields.BooleanField'>.

Вы можете получить имя в виде простой строки, если хотите, с помощью:

print type(f_type).__name__
# produces 'BooleanField'

Редактировать: Также будьте осторожны с различиями между полем и виджетом. В Django нет поля Checkbox, а есть только виджет CheckboxInput, который используется по умолчанию для BooleanField. Вы имеете в виду поиск виджета (который очень специфичен для визуализации) или поля (которое имеет больше отношения к типу данных и проверке для этого поля формы)? Если виджет, вы можете получить виджет, используя:

f_type.widget

Надеюсь, это поможет!

1 голос
/ 09 марта 2009

Я не уверен, что это именно то, что вам нужно, но если вы хотите узнать, какое поле в итоге окажется в HTML, вы можете проверить это с помощью:

{% for field in form %}
    {{ field.field.widget.input_type }}
{% endfor %}

widget.input_type будет содержать текст, пароль, выбор и т. Д.

P.S. Я не знал этого до 5 секунд назад. #django irc.freenode.net всегда может помочь.

0 голосов
/ 09 марта 2009

Предполагается, что вы используете HTML здесь ... Потому что это не очень понятно.

Как насчет того, чтобы дать ему дополнительный класс?

И если вы еще не знали, атрибут класса распознает это:

class="hello there you"

как имеющий 3 класса. Класс 'привет', класс 'там' и класс 'ты'. Поэтому, если у них уже есть класс, просто добавьте пробел и свое пользовательское имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...