我需要用一组复选框的结果和一个“其他”[请指定] 选项填充一个 CharField(对于下面的表单状态,该值将是“选项-a,其他”)。表单基本上看起来像:
[x] option a
[ ] option b
[x] other
If you selected "other", please specify. [__________]
我已经通过实现 MultipleChoiceField 的子类成功地完成了大部分工作:
class CommaStringMultipleChoiceField(MultipleChoiceField):
def to_python(self, value):
return [val.rstrip().lstrip() for val in value.split(',')]
def clean(self, value):
return ",".join([val.rstrip().lstrip() for val in value])
在我的表单类中,我将该字段分配给我的表单字段:
TYPE_CHOICES = [
(u'option-a',u"Option A"),
(u'option-b',u"Option B"),
(u'other', u"Other"),
]
type = CommaStringMultipleChoiceField(
choices=TYPE_CHOICES,
widget=CheckboxSelectMultiple
)
这会正确呈现表单,并调用我的自定义 clean() 方法,但是当我保存表单时出现验证错误:
Value u'education,other' is not a valid choice.
我试过添加自定义验证器,但到目前为止没有任何区别。缺少什么?
最佳答案
由于该错误只会在您将模型实例保存到表单之外时发生,因此请检查“Value u'education,other' is not a valid choice”错误是否来自模型验证表单验证。如果您在模型字段上还设置了一个 choices
,而您确实想在其中存储一个自由格式的字符串,则可能会发生这种情况。
关于python - 在 Django 中实现多个(复选框)选择 + "Other"小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6743022/