我是 django 和 python 的新手,目前正在尝试构建一个包含各种选项的表单以及一个“其他”选项用于不在列表中的选项。我想定义该选项,以便在选中“其他”时,表单仅验证其他文本框是否包含非空值。
是否有适当的方法来扩展 django 表单/字段/小部件来完成此任务? 在搜索 google 和 stackoverflow 后可以找到最接近的东西是这个示例,它提供了扩展创建自定义渲染器、小部件和表单字段的代码,但它基于旧版本的 django。
我是 django 和 python 的新手,目前正在尝试构建一个包含各种选项的表单以及一个“其他”选项用于不在列表中的选项。我想定义该选项,以便在选中“其他”时,表单仅验证其他文本框是否包含非空值。
是否有适当的方法来扩展 django 表单/字段/小部件来完成此任务? 在搜索 google 和 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