Шаблон Django field.is_required Работа вокруг - PullRequest
1 голос
/ 27 апреля 2011

У меня есть форма django, которую я выводил без проблем.

Мой вопрос касается проверки jQuery.
Я хочу применить проверку JQuery к входным данным, которые требуются.
Я использую http://docs.jquery.com/Plugins/validation

Нет требуемого field.is_ в шаблоне
поэтому я использую help_text и оцениваю это в своем шаблоне.

Просто интересно, а это лучший способ?

Любой совет высоко ценится.

Вот это:

1) Форма класса

class UserDetailsForm(forms.Form):

    city_town = forms.CharField(label='City / Town',max_length=100, required=True, help_text='*')
    state_province = forms.CharField(label='State / Province',max_length=100, required=True, help_text='*')

2) Форма вывода

{% for field in form %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }}: {{ field.help_text }} {{ field }}
</div>
{% endfor %}

3) Проверка формы jQuery

// Form Validation Setup
{% for field in form %}
{% if field.help_text == '*' %}
$("input[name='{{ field.html_name }}']").addClass('required');
{% endif %}
{% endfor %}
$("#updateProfileForm").validate();

Есть ли лучший способ, чем эта работа вокруг, которую я использую:

if field.help_text == '*'

Возможно, я захочу использовать это поле для всплывающей подсказки позже
но сейчас я использую звездочку, поэтому я могу использовать ее в цикле для проверки jQuery
в шаблоне.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 27 апреля 2011

Когда вы перебираете экземпляр формы, метод __iter__ возвращает BoundField (который обрабатывает рендеринг и другие элементы misc).Это связанное поле имеет атрибут поля, в котором хранится фактический экземпляр поля (в котором хранится обязательный атрибут).Так что вы можете сделать

{% if field.field.required %}
    $("input[name='{{ field.html_name }}']").addClass('required');
{% endif %}
1 голос
/ 27 апреля 2011

Просто добавьте это в свою модель.Это добавит класс 'required' к вашей форме.

city_town.widget.attrs['class'] = 'required'
...