【问题标题】:How to return a value for an unchecked checkbox with django如何使用 django 返回未选中复选框的值
【发布时间】:2011-08-15 08:16:09
【问题描述】:

我正在尝试更改通过复选框控制的 db 中的值,如果该项目的评论已经存在,我将使用它填充字段。目前我有一个隐藏字段,然后是一个 jQuery Mobile 复选框来控制它:

models.py:

fave = models.BooleanField()

ModelForms 面类:

'fave': HiddenInput(attrs={'value' : 'False'}),

还有我的评论表:

{% if review.fave == 'True' %}
    <div class="ui-block-c">
        <input type="checkbox" name="fave" id="checkbox-1" class="custom" checked="checked"/>
        <label for="checkbox-1">fave</label>
    </div>
{% else %}
     <div class="ui-block-c">
        <input type="checkbox" name="fave" id="checkbox-1" class="custom" />
        <label for="checkbox-1">fave</label>
    </div>
{% endif %}

隐藏字段是这样呈现给浏览器的:

&lt;input type="hidden" name="fave" value="True" id="id_fave"&gt;

虽然我可以将复选框设置为非隐藏字段,但该任务使其符合 django 和 jQuery Mobile 的预期方式看起来令人生畏。

几个帖子列出了解决方案: Setting the value of a hidden input

,但似乎没有什么能按我想要的方式工作。我似乎无法覆盖value = True

我缺少一些简单的东西吗?我是不是搞错了?

【问题讨论】:

  • 我认为您正在尝试将字符串设置为布尔值
  • 我也很担心这一点。我尝试了不带引号的value = False,然后尝试了default=False(这给了我一个错误)。我将如何翻转该布尔值?
  • {% if review.fave == 'True' %} 我认为 fave 作为布尔值是不可能的。
  • 这是绝对正确的。我正在尝试其他一些方法,然后将其保留。我最初使用{% if review.fave %} 来验证存在,然后如果存在则检查该字段。它听起来很粗糙,但也许我应该尝试一个 char 字段,并使用复选框来修改值。虽然看起来很hackish :-(

标签: html django django-forms


【解决方案1】:

尝试使用

'fave': CheckboxInput(attrs={'style':'display:none'})

【讨论】:

  • 谢谢 srusskih,我认为这不会起作用,因为我需要清除的复选框仍然处于打开状态,只是隐藏了,这与我现在遇到的问题相同。
猜你喜欢
  • 2012-12-13
  • 1970-01-01
  • 2017-12-17
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
  • 2022-12-15
  • 2018-08-07
  • 1970-01-01
相关资源
最近更新 更多