цикл справки django в наборе форм возвращает только последний индекс в forms.py

#django #django-models #django-forms #django-views

#django #django-models #django-forms #django-views

Вопрос:

попытка выполнить цикл над формами formset внутри forms.py но он возвращает только последний индекс formset, а не все из них. forms.py:

 class MyModelFormSet(BaseModelFormSet):
def clean(self):
    super(MyModelFormSet, self).clean()

    totalforms = self.total_form_count() #to get number of forms in formset

    for form in self.forms:
        for n in range(totalforms):
            d = self[n].cleaned_data['debit'] # if i use  manullay self[0], self[1] it works
        if d == 100:
            raise forms.ValidationError('debit is 100!')
        return d
  

Комментарии:

1. вы каждый раз сохраняете свой «self [n].cleaned_data[‘debit’]» в «d», и d является константой, а не массивом или dict. Просто измените его на fix.

2. О, спасибо! как я об этом не подумал 🙂 ваше решение решило мою проблему, большое спасибо 🙂

3. @amezamr как насчет того, чтобы поставить мне лайк на мой комментарий.

Ответ №1:

окончательно решено с комментарием NVS Вот обновленный код: сначала нужно настроить список, а затем добавить к этому списку

 class MyModelFormSet(BaseModelFormSet):
def clean(self):
    super(MyModelFormSet, self).clean()

    totalforms = self.total_form_count() #to get number of forms in formset
    ds = []
    for form in self.forms:
        for n in range(totalforms):
            d = self[n].cleaned_data['debit']
            ds.append(d)
        if 100 in ds:
            raise forms.ValidationError('debit is 100!')
        return d