Как узнать, установлен ли флажок только с тегом формы {{form.checkbox}} - PullRequest
0 голосов
/ 10 октября 2009

Как узнать, установлен ли флажок (True, 1) только для тега формы {{form.checkbox}}?

'activo' определяется как (True, 1) в БД.

Мой шаблон:

{{ form.activo }}
RESULTS:
<input id="id_activo" type="checkbox" name="activo" checked="checked"/>

{{ form.activo.data }}
RESULTS:
False

{{ form.activo.value }}
RESULTS:
""

Пока ни 1, ни Истина не пройдут. : S

Любая подсказка приветствуется. = ')

Ответы [ 3 ]

1 голос
/ 12 октября 2009

Исходя из вашего ответа на ответ mbarkhau, использование instance= не ограничивает форму, оно просто предоставляет значения по умолчанию для формы.

Вот логика в шаблоне:

{% if form.is_bound %}
    {% if form.initial.activo %}
         Checked.
    {% else %}
         Not checked.
    {% endif %}
{% else %}
    {% if form.activo.data %}
         Checked.
    {% else %}
         Not checked
    {% endif %}
{% endif %}

Но имеет больше смысла делать эту логику в представлении и передавать дополнительный контекст. Что-то вроде:

context_data = {...}
if form.is_bound:
    activo = form.data.get('activo')
else:
    activo = form.initial.get('activo')
context_data['activo'] = bool(activo)
return render_to_response('your_template.html', context_data)
1 голос
/ 10 октября 2009

Проверяется, если request.POST.has_key ('activo') или {{form.activo.data}} действительно возвращает True при инициализации с помощью request.POST.

Ваш вопрос не совсем понятен, но, возможно, ваша проблема связана с тем фактом, что браузеры ничего не помещают в данные POST для непроверенного флажка.

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

0 голосов
/ 10 октября 2009

Если вы хотите логическое условие в шаблонах, это должно работать:

{% if form.activo %}
--
{% else %}
---
{% endif %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...