代码之家  ›  专栏  ›  技术社区  ›  panchicore

如何知道选中的复选框是否只有{{form.checkbox}}表单标记

  •  0
  • panchicore  · 技术社区  · 16 年前

    我怎么知道一个复选框是否被选中(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:
    ""
    

    然而没有一个或是真的会通过。的S

    任何暗示都是值得赞赏的。=’

    3 回复  |  直到 11 年前
        1
  •  1
  •   mbarkhau    16 年前

    当使用request.post初始化时,检查request.post.has_key('activo')或{form.activo.data}是否实际返回true。

    您的问题还不太清楚,但也许您的问题与以下事实有关:浏览器没有在post数据中为未选中的复选框放置任何内容。

    当我不得不区分一个根本没有显示的复选框和一个没有选中的复选框时,这使事情变得复杂起来。仅仅从邮政数据看,你无法区分这两个案件。

        2
  •  1
  •   SmileyChris    16 年前

    根据你对姆巴豪回答的答复,使用 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)
    
        3
  •  0
  •   avenger    16 年前

    如果要在模板中使用布尔条件,则应执行以下操作:

    {% if form.activo %}
    --
    {% else %}
    ---
    {% endif %}
    
    推荐文章