Проверка правильности добавленных строк в Jquery - PullRequest
0 голосов
/ 08 ноября 2019

Пожалуйста, помогите! Я пытаюсь добавить проверки в 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')
...