W mojej aplikacji aplikacji Django mam formset, który jest tworzony z prostej (nie-modelowej) postaci, z dodatkowym = 1 (aby umożliwić javasriptowi dodawanie kolejnych formularzy później).Django Formset.is_valid() kończy się niepowodzeniem dla dodatkowych formularzy
class SomeForm(forms.Form):
#some fields with required=False
length = forms.IntegerField(required=False)
# An example of one of the fields with choices i have
A = 0
B = 1
C = 2
D = 3
choices = ((A, 'Aah'), (B, 'Baa'), (C, 'Caa'), (D, 'Daa'))
# This is a required choice field
pickme = forms.ChoiceField(choices=choices)
SomeFormset = formset_factory(SomeForm, can_delete=True, extra=1)
Teraz, gdy tworzę i starają się potwierdzić to w moim przekonaniu na żądanie POST:
my_formset = SomeFormset(request.POST, request.FILES)
if(my_formset.is_valid()):
# FAIL
zawsze zawiedzie powyższy czek, jeśli extra renderowane formularz jest składany pusty.
Jeśli sprawdzę na form.changed_data
na ostatnim pustym formularzu dodatkowym, otrzymam pola, które mają do wyboru (np. pickme powyżej). Innymi słowy, zestaw nie jest wystarczająco inteligentny, aby stwierdzić, że pusty przesłany formularz powinien zostać zignorowany, gdy wymagane są pewne pola wyboru.
Mam coś, co wydaje się być tym samym błędem, ale podanie początkowej wersji nie rozwiązało problemu. Czy jesteś pewien, że to właśnie naprawiło twój problem? – ricree
Nie, ale to właśnie naprawiło. – drozzy
Ta odpowiedź rozwiązała problem, który miałem. Dzięki! – fholo