首页 > 解决方案 > 我的 Bollean 字段之一显示为选择(未知/是/否)而不是复选框

问题描述

我有一个无法修复的错误。我在表单中有许多布尔字段,并且所有字段都显示为复选框,但显示为选择列表的字段除外

模型.py

class Psychosocial2(Invalidite):
    """ A class to create a psychosocial 2 instance. """

    ide = models.AutoField(primary_key=True)
    ...
    ps2_res_pdr = models.BooleanField('Pas de réponse', null=True, blank=True) <- correctly displayed
    ps2_res_nap = models.BooleanField("NA", null=True, blank=True)             <- displayed as a select

表格.py

...
self.fields['ps2_res_nap'] = forms.BooleanField(label = 'NA',required=False)
...

模板

<tr>
<td></td>
<td colspan="2">
{{ form.ps2_res|as_crispy_field }}
{{ form.ps2_res_pdr|as_crispy_field }}
{{ form.ps2_res_nap|as_crispy_field }} <--
</td>
</tr>

标签: django

解决方案


根据文档,布尔字段的默认表单小部件是 CheckboxInput,如果 null=True 则为 NullBooleanSelect。所以看起来“冒犯”的人行为正确,真正的问题是为什么其他也有 null = True 的人没有。您是否可以为其他小部件指定小部件,以便不使用默认值?


推荐阅读