一尘不染

Django BooleanField作为单选按钮?

django

Django 1.0.2中是否有一个小部件可以将a渲染models.BooleanField为两个单选按钮而不是一个复选框?


阅读 1168

收藏
2020-04-03

共2个答案

一尘不染

你可以通过重写ModelForm中的字段定义来做到这一点:

class MyModelForm(forms.ModelForm):
    boolfield = forms.TypedChoiceField(
                   coerce=lambda x: x == 'True',
                   choices=((False, 'False'), (True, 'True')),
                   widget=forms.RadioSelect
                )

    class Meta:
         model = MyModel
2020-04-03
一尘不染

Django 1.2为模型形式添加了“ widgets”元选项:

在你的models.py中,为你的布尔字段指定“选择”:

BOOL_CHOICES = ((True, 'Yes'), (False, 'No'))

class MyModel(models.Model):
    yes_or_no = models.BooleanField(choices=BOOL_CHOICES)

然后,在你的forms.py中,为该字段指定RadioSelect小部件:

class MyModelForm(forms.ModelForm):
    class Meta:
        model = MyModel
        widgets = {
            'yes_or_no': forms.RadioSelect
        }

我已经使用SQLite数据库进行了测试,该数据库也将布尔值存储为1/0值,并且在没有自定义强制功能的情况下似乎可以正常工作。

2020-04-03