4

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

是否有适当的方法来扩展 django 表单/字段/小部件来完成此任务? 在搜索 google 和 stackoverflow 后可以找到最接近的东西是这个示例,它提供了扩展创建自定义渲染器、小部件和表单字段的代码,但它基于旧版本的 django。

4

1 回答 1

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
于 2012-07-26T14:33:55.137 回答