Django模型中的BooleanField与CharField对比
在我的应用模型中,我有一个 BooleanField
(布尔字段):
campaign = models.BooleanField(default=False, db_index=True,
verbose_name=_('processed'), help_text=_('Campaign or not ?'))
我用这个字段来区分两种情况。所以,我想通过一个 HTML 表单把这个值作为隐藏字段发送出去:
<input type="hidden" name="campaign" value="True or False" />
但是,表单似乎发送的是字符串,而我想把这个字符串转换成 Boolean
(布尔值)。当然,我可以重新写模型,把它改成 CharField
(字符字段),并设置一个 default='True or False'
的默认值,但这样看起来不太优雅。
有没有更符合 Django 风格的方法来做到这一点呢?
1 个回答
0
表单发送的是字符串,我想把这个字符串转换成布尔值。
在请求的 request.POST 中,所有的数据都是以字符串或字符串列表的形式出现。你需要自己进行转换,或者使用 Django 表单(更推荐的方式),它会为你完成这个工作。
使用 Django 表单时,你可以在初始化 forms.BooleanField 时替换小部件,方法如下:
class MyForm(forms.ModelForm):
campaign = forms.BooleanField(widget=forms.HiddenInput())