使用CheckboxSelectMultiple在django MultipleChoiceField中正确定义“其他”选项

时间:2012-07-24 01:48:11

标签: django model-view-controller checkbox django-forms multiple-choice

我是django和python的新手,目前正在尝试构建一个包含各种选项的表单,以及一个不在列表中的选项的“其他”选项。我想定义选项,以便在选中“other”时,表单仅验证另一个文本框是否包含非空值。

是否有正确的方法来扩展django表单/字段/小部件来实现此目的?搜索google和stackoverflow之后最接近的事情是this example,它提供了扩展创建的代码自定义渲染器,窗口小部件和表单字段,但它基于旧版本的django。

1 个答案:

答案 0 :(得分:4)

如果您使用django.forms.ModelForm呈现表单,则可以在选项字段(clean_[your field name])的表单验证中执行此操作。

from django import forms

class YourModelForm(forms.ModelForm):
    def clean_your_options(self):
        your_options = self.cleaned_data.getlist('your_options')

        if 'other' in your_options:
            other_text_input = self.cleaned_data.get('other_text_input')
            if len(other_text_input) == 0:
                raise forms.ValidationError('Other text input must contain value')

        return your_options