#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