Django模型中的BooleanField与CharField对比

0 投票
1 回答
3078 浏览
提问于 2025-04-17 05:52

在我的应用模型中,我有一个 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())

关于 Django 表单的更多信息

撰写回答