Django 1.0.2中是否有一个小部件可以将a渲染models.BooleanField为两个单选按钮而不是一个复选框?
models.BooleanField
你可以通过重写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
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值,并且在没有自定义强制功能的情况下似乎可以正常工作。