正确定义 django MultipleChoice Field 中的"other"选项



我是django和python的新手,目前正在尝试构建一个具有各种选项的表单,以及一个用于列表中未列出选项的"其他"选项。我想定义这个选项,这样当选中"other"时,表单只验证其他文本框是否包含非空值。

是否有适当的方法来扩展django表单/字段/小部件来实现这一点在搜索谷歌和stackoverflow后,最接近的是这个例子,它提供了代码来扩展创建自定义渲染器、小部件和表单字段,但它是基于django的旧版本。

如果使用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

最新更新