duber
duber

Reputation: 2869

Why isn't my ModelFormSet saving?

I'm using a ModelFormSet, and I'm getting a None value for my instances. POST data is coming through; the form validates; and everything's great up until instances = form.save(commit=False). What could be the origin of this?

    if request.POST:
            form = MembershipFormSet(request.POST)
            if form.is_valid():
                    instances = form.save(commit=False)
                    for instance in instances:
                            instance.user = request.user
                            instance.save()
                    return HttpResponseRedirect('next_page')
            else:   
                    return HttpResponse(form.errors + request.POST.items())

Upvotes: 0

Views: 110

Answers (1)

karthikr
karthikr

Reputation: 99620

Try this:

if request.POST:
    formset = MembershipFormSet(request.POST)
    if formset.is_valid():
        for form in formset:
            instance = form.save(commit=False)
            instance.user = request.user
            instance.save()
        return HttpResponseRedirect('next_page')
    else:   
        return HttpResponse(formset.errors + request.POST.items())

Your issue is here:

instances = form.save(commit=False)

The issue is, you need to extract the individual form objects, cast it to the object instance, and assign user to it. Where as in your code, instances=form.save(...) is not doing that.

Upvotes: 2

Related Questions