7

I have a form with checkboxes that works fine, but when the user submits the form with errors and my checkbox is checked I need to change div class which holds the checkbox. So I was experimenting with {{ form.mycheckbox.data }} in the template and it says False on page load. Now when user is click on a checkbox and the form has errors, it says on. So I tried:

{{ if form.mycheckbox.data == True }} doesn't work

{{ if form.mycheckbox.data != False }} doesn't work

{{ if form.mycheckbox.data == 'on' }} doesn't work

{{ if form.mycheckbox.data == on }} doesn't work

Adam Michalik
  • 9,678
  • 13
  • 71
  • 102
Goran
  • 6,644
  • 11
  • 34
  • 54

4 Answers4

23

Use {% if form.mycheckbox.value %}. This will evaluate to true if the box is checked. For the opposite behavior, use {% if not form.mycheckbox.value %}.

Note the syntax is {% if ... %}, not {{ if ...}}. Percent-brackets are for commands, double-brackets are for outputting variables.

user931920
  • 275
  • 1
  • 3
19

In models.py:

class Article:
    published = BooleanField()
    (...)

In the template:

 <input type="checkbox" name="published" {% if article.published %}checked{% endif %} />
hermansc
  • 728
  • 8
  • 20
7

Work for me:

{% for foo in form.tags %}
  <label class="publication-tag">
    <input class="publication-tag__checkbox"
      {% if foo.choice_value in foo.value %}checked="checked"{% endif %}
      type="checkbox" 
      name="{{ foo.name }}"
      value="{{ foo.choice_value }}">
{% endfor %}

That:

{% if foo.choice_value in foo.value %}checked="checked"{% endif %}
user3212779
  • 71
  • 1
  • 1
  • 2
    A correction to the above `if condition` is `{% if foo.choice_value in forms.tags.value %}checked="checked"{% endif %}` – gbozee Jan 21 '16 at 09:47
  • `{% if foo.choice_value in foo.value %}` This works just fine. – Suraj Apr 02 '17 at 20:03
0

While, first you should use BooleanField in your model, not the CharField. Then, there are two accesses:

  • just put {{form.yourField}} in your template (preferred)

  • or, use {% if form.yourFiled.value %} checked {%endif%}