У меня есть страница, содержащая форму Django, затем под ней набор форм (динамическое число строк).
В верхней форме находится поле «общая длина», а каждая строка в наборе форм ниже содержит поле «длина». Мне нужно проверить, что сумма длин, представленных для каждой строки набора форм, составляет <= поле «общая длина» в единственной форме в верхней части. </p>
Я не думаю, что смогу сделать это с помощью обычного метода очистки формы в форме, которая составляет набор форм, поскольку у нее нет области для получения значений из других форм в наборе форм. Я думаю, что я мог бы сделать это в виде вместо этого, но это лучший способ?
Редактировать:
Решено путем отображения логики проверки и циклического перебора формы:
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, {...})