jmitchel3
jmitchel3

Reputation: 391

Django Formset... saving User with field exclusion

So in this formset the first field saves & updates just fine... but when I want to add a new object, it doesn't work out so well.

#Views.py
def edit_auto(request):
car = Auto.objects.filter(user=request.user)
CarFormSet = modelformset_factory(Auto, form=AutoForm, max_num=3)

if request.method == 'POST':
    formset = CarFormSet(request.POST, request.FILES, queryset=car)
    if formset.is_valid():
        formset.save(commit=False)
        formset.user = request.user
        formset.save()

    return render_to_response('manage_users.html', {'message':'Success! The user has been updated!'}, context_instance=RequestContext(request))
else:
            formset = CarFormSet(queryset=car)
return render_to_response('mycar.html', locals(), context_instance=RequestContext(request))

#forms.py
class AutoForm(forms.ModelForm):
    class Meta:
        model = Auto
        user = Auto.user
        exclude = ('user',)

Is it something in the template? If it was a single instance of the form, form.user = request.user normally saves but this doesn't. Any suggestions? Thank you for your help.

Upvotes: 0

Views: 708

Answers (1)

Dan Russell
Dan Russell

Reputation: 970

For the user-assigning step, just iterate over the formset.

...
if request.method == 'POST':
    formset = CarFormSet(request.POST, request.FILES, queryset=car)
    if formset.is_valid():
        formset.save(commit=False)
        for form in formset:
            form.user = request.user
        formset.save()
...

Upvotes: 2

Related Questions