Пожалуйста, помогите! Я пытаюсь добавить проверки в Django is_valid () в пользовательской реализации ModelFormset (BaseInlineFormSet). Однако self.forms имеет cleaned_data, только если для min_num установлено это количество. Похоже, что игнорируется фактическое число поля (TOTAL_FORMS), и cleaned_data для новых строк, добавленных с помощью набора форм jQuery на внешнем интерфейсе, не отправляются обратно правильно.
forms.py:
CustomInlineFormSet= forms.inlineformset_factory(MainModel, InlineFormModel,
widgets = {},
form=InlineFormModelForm,
formset = CustomInlineFormModelFormset,
exclude=[],
min_num=1,
max_num = 8,
extra=0,
can_delete=True
)
# I'm wondering if I need to set initial on the POSTed inlineform, but if so, how to instantiate that correctly????
class CustomInlineFormModelFormset(BaseInlineFormSet):
def clean(self):
cleaned_data = super(CustomOperatorFormset, self).clean()
for form in self.forms:
# All docs/examples point to this, but form['cleaned_data'] is blank for 2nd/3rd rows added through the jQuery formset. Only seems to match the min_num !! So the logic below won't work for new forms!
if(not form.cleaned_data['name']):
form.add_error('name, 'Make required for specific condition only')
views.py
inline_set = CustomInlineFormSet(request.POST, instance=???, prefix='custom_set')