python - 使用来自多个 CheckboxSelectMultiple 的值列表验证 django 表单
问题描述
使用 Django2.0,我设置了一个表单,它在带有复选框的列表中显示我的所有模型对象。提交后,在我的请求字典中,它将它们存储为 ID 列表。我如何在表单中验证这些?clean() 方法不会被调用。
形式:
class SampleRunSearchForm(forms.ModelForm):
sample_run_id = forms.ModelChoiceField(
label='Sample Run',
queryset=SampleRun.objects.all(),
widget=forms.CheckboxSelectMultiple,
)
class Meta:
model = SampleRun
fields = ('sample_run_id',)
def __init__(self, *args, **kwargs):
super(SampleRunSearchForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.layout = Layout(
Field('sample_run_id', css_class='sample-run-display',),
HTML('<br>'),
Submit('submit', 'Report samples', css_class='upload-btn')
)
self.helper.form_method = 'GET'
def clean_sample_run_id(self):
sr_id = self.cleaned_data.getlist('sample_run_id')
for sr in sr_id:
... do something to validate...
else:
raise(forms.ValidationError('Error'))
return(sr_id)
意见:
class SearchSampleRun(View):
samplerunform = SampleRunSearchForm
template_name = 'results/samplerun_search_form.html'
def get(self, request, *args, **kwargs):
samplerunform = self.samplerunform()
if request.GET:
samplerunform = self.samplerunform(request.GET)
samplerunform.is_valid()
context = {'samplerunform': samplerunform}
return render(request, self.template_name, context)
它向我的页面返回一个错误,它不是一个有效的选择。
clean() 方法也将执行,但 clean_sample_run_id() 不起作用 - 我是否需要遍历每个 ID 并分别通过表单进行验证?!
解决方案
推荐阅读
- java - 如何通过具有特定条件的java从mongodb获取不同的值
- ios - 打开 'comgooglemaps://' uri 正在打开另一个应用程序。- iOS
- php - 如何使用 php 开关让可点击的列表项工作
- python - 检查列表中的两个元素是否相同。如果同样打印该特定元素
- julia - Julia 不接受这个约束。没有匹配笛卡尔索引的方法
- keycloak - 如何在 Kubernetes 上的 Keycloak Operator 部署上创建自定义主题?
- ios - 文件'(null)'不可写异常(EXPO IOS)React Native
- python - 在列表列表中查找共同的元素序列
- c# - 我正在使用 c# 导入 excel,但我想导入第二页
- c# - 在 iText7 中使用 TSAClientBouncyCastle 的基本和摘要式身份验证