2009-10-09 68 views
0

如何知道是否选中了具有{{form.checkbox}}窗体的复选框(True,1)标签?如何知道是否选中了复选框,并且只有{{form.checkbox}}窗体标记

'activo'在db中定义为(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

任何提示表示赞赏。 =')

回答

1

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

您的问题并不十分清楚,但也许您的问题与事实有关,即浏览器不会将任何内容放入POST数据中用于未选中的复选框。

当我必须区分未显示复选框和显示复选框未检查时,这使事情变得复杂。仅仅通过查看POST数据,你不能分辨出这两种情况。

+0

但目前还没有办法知道,带来的有界表单中的数据? myform = TheForm(instance = mymodel),myform附带数据填充。 – panchicore 2009-10-10 13:14:19

0

如果你想在模板的布尔条件应该工作:

{% if form.activo %} 
-- 
{% else %} 
--- 
{% endif %} 
+0

@Saurabh {%if form.activo%} does not have any sense,cuz form.activo always always in the form,and what it is a html code。 – panchicore 2009-10-10 20:03:44

1

从您的回复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) 
相关问题