Rokas
Rokas

Reputation: 125

First form required in formset

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

Answers (1)

brainless coder
brainless coder

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

Related Questions