【发布时间】:2019-06-02 00:52:59
【问题描述】:
我有一个包含 Django 表单的页面,然后在它下面有一个表单集(动态行数)。
在最上面的表单中是一个“总长度”字段,下面表单集中的每一行都包含一个“长度”字段。我需要验证为表单集的每一行提交的长度总和是否
我认为我不能在构成表单集的表单上使用正常的表单清理方法来执行此操作,因为它无法从表单集中的其他表单中获取值。我想我可以改为在视图中执行此操作,但这是最好的方法吗?
编辑:
通过将验证逻辑放在视图中并通过表单集循环解决:
if form.is_valid() and formset.is_valid():
total_sample_length = form.cleaned_data['total_length']
if total_sample_length:
sum_segment_lengths = 0
for segment_form in formset:
sum_segment_lengths += segment_form.cleaned_data['length']
if sum_segment_lengths > total_sample_length:
for segment_form in formset:
segment_form.add_error('length', 'Sum of Segment Lengths must be <= Total Length!')
return render(request, template, {...})
【问题讨论】:
标签: django django-forms django-views formset django-validation