goh*_*goh 14 django django-models django-forms
在文档中,nullbooleanfield
表示as a <select> box with "Unknown", "Yes" and "No" choices.
如何更改select
其他更有意义的文本的值,并将其映射回我的是,否和未知值modelform
?
例如,我有yes_no_required = models.NullBooleanField()
,我想拥有'yes I acknowledge this'
,'no, I do not like this'
并'I do not know now'
映射到是,否,并相应地要求.
Elf*_*erg 31
我花了半个小时拼凑一个演示,以证明自己的作品:
CHOICES = (
(None, "I do not know now"),
(True, "Yes I acknowledge this"),
(False, "No, I do not like this")
)
class Demo(models.Model):
yes_no_required = models.NullBooleanField(choices = CHOICES)
class DemoForm(forms.ModelForm):
class Meta:
model = Demo
Run Code Online (Sandbox Code Playgroud)
我查看了Django源代码. 一切都可以接受选择阵列.显然,对于一些没有意义的,但它是可能的.
您可以以如下形式处理此问题(无需修改模型):
forms.NullBooleanField(
widget=forms.RadioSelect(renderer=HorizontalRadioRendererSpace,
choices=CHOICES),
label='...',
required=False)
Run Code Online (Sandbox Code Playgroud)
我认为对可能处于三种状态的数据使用 NullBooleanField 是一个坏主意,例如:是/否/未设置。
编辑数据有效。但如果您想为这些数据编写一个搜索表单,就会出现大麻烦。
那么“空”值可以有两种含义:
解决方案很简单:使用 ChoiceField。
更多详细信息请参见:https://github.com/guettli/programming-guidelines/blob/master/README.rst
归档时间: |
|
查看次数: |
6850 次 |
最近记录: |