我以多种方式成功地将NullBooleanField
实现为单选按钮,但问题是我不能将默认值设置为None。
代码如下:
models.py:
class ClinicalData(models.Model):
approved = models.NullBooleanField()
...
forms.py:
NA_YES_NO = ((None, 'N/A'), (True, 'Yes'), (False, 'No'))
class ClinicalDataForm(ModelForm):
approved = forms.BooleanField(widget=forms.RadioSelect(choices=NA_YES_NO))
class Meta:
model = ClinicalData
我尝试了以下方法:
在模型中设置default:None
和/或在表单和表单实例的视图中设置{
所有这些都没有成功。Im当前使用的是CharField
,而不是NullBooleanField
。
但是有什么方法可以用NullBooleanField
得到这个结果吗???在
我知道这个问题已经有一段时间了,但我也在试图解决这个问题,遇到了这个问题。在
在尝试了emyller的解决方案后,它似乎起作用了,但是当我查看表单的},没有记录
self.cleaned_data
时,我发现我得到的值都是True
或{False
值。在我查看了Django代码,发现虽然正常的NullBooleanField select确实将}和任何其他值映射到{}
None
、True
、False
分别映射到1
、2
、3
,但RadioSelect将1
映射到True
,0
映射到{我最后用的是:
不管怎样,这里给出的其他答案不再适用于django1.7。将
choices
设置为[(True, "Yes"), (False, "No"), (None, "N/A")]
效果很好。在出于一些奇怪的原因-我没有在Django代码中检查它-,一旦您为NullBooleanField提供了一个自定义小部件,它就不再接受您期望的值(})。在
None
,True
或{通过分析内置的choices属性,我发现这些值分别等于}。在
1
、2
和{所以,这就是我坚持使用默认为“未知”的单选按钮的快捷而肮脏的解决方案:
它看起来不太好,除非很有必要,否则我不会用的。但它就在那里,以防万一。在
相关问题 更多 >
编程相关推荐