Reputation: 125
I want to make first form in formSet required. I am trying to achieve it in __init__
method of formset class, but it does not work. I am getting this error:
__init__() got an unexpected keyword argument 'queryset'
When i am using formset_factory instead of modelformset_factory everything is okay. View:
form_class = modelformset_factory(EventTime, form = EventTimeForm, extra=3, formset=EventTimeFormset)
formset = form_class(self.request.POST or None, prefix="form", instance = self.object)
Form:
class EventTimeFormset(BaseModelFormSet):
def clean(self):
if any(self.errors):
return
if not self.forms[0].cleaned_data['start_time']:
raise forms.ValidationError("At least 1 time is required for event")
code = "missing_time"
Upvotes: 1
Views: 530
Reputation: 6430
Try min_num
and validate_min
like this -
form_class = modelformset_factory(EventTime, form = EventTimeForm, extra=3, formset=EventTimeFormset, min_num=1, validate_min=True)
This will automatically validate for at least one formset factory item.
Documented here -
https://docs.djangoproject.com/en/1.9/topics/forms/formsets/#validate-min
Upvotes: 2