What determines initial number of forms in Django modelformset_factory?

20 views
Skip to first unread message

Duane Gregory

unread,
Dec 28, 2016, 7:17:31 AM12/28/16
to Django users
My model formset is producing an initial 7 forms, as seen here:

<input id="id_form-TOTAL_FORMS" name="form-TOTAL_FORMS" type="hidden" value="7" /><input id="id_form-INITIAL_FORMS" name="form-INITIAL_FORMS" type="hidden" value="7" />

I would like to alter that number, but cannot see how.
view and form for ref:

def micro_log_create(request):
    MicroLogFormSet = modelformset_factory(Micro_Log, form=MicroLogForm, max_num=4, extra=0)
    if request.method == 'POST':
        formset = MicroLogFormSet(request.POST, request.FILES)
        if formset.is_valid():
            formset.save()
            return reverse('micro-log')
    else:
        formset = MicroLogFormSet()
    return render(request, 'app/micro_log/micro_log_create.html', {'formset': formset})

class MicroLogForm(forms.ModelForm):
    class Meta:
        model = Micro_Log   
        exclude = ['user', 'date_time']
MicroLogFormSet = modelformset_factory(Micro_Log, form=MicroLogForm, max_num=4, extra=0)
formset = MicroLogFormSet()

Thank you

Farhan Khan

unread,
Dec 28, 2016, 2:43:39 PM12/28/16
to Django users
I believe its the "extra" parameter.
By default, the size is the number of objects you pass it. You can set that value to 0 by doing YourObject.objects.none()

Duane Gregory

unread,
Dec 28, 2016, 4:13:50 PM12/28/16
to Django users
Perfect. Thank you!
Reply all
Reply to author
Forward
0 new messages