我是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