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

1
  • I was make typo with div class name, =='on' works. Sorry Commented Sep 8, 2011 at 19:31

4 Answers 4

24

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.

Sign up to request clarification or add additional context in comments.

Comments

19

In models.py:

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

In the template:

 <input type="checkbox" name="published" {% if article.published %}checked{% endif %} />

Comments

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 %}

2 Comments

A correction to the above if condition is {% if foo.choice_value in forms.tags.value %}checked="checked"{% endif %}
{% if foo.choice_value in foo.value %} This works just fine.
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%}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.