views:

124

answers:

1

What if I want to do something with my formset other than immediately saving it?

How can I do this?

        for form in vehicles_formset.forms:
            listing.id = None
            listing.vehicle_year = form.cleaned_data['year']
            listing.vehicle_make = form.cleaned_data['make']
            listing.vehicle_model = form.cleaned_data['model']
            listing.vin = form.cleaned_data['vin']
            listing.vehicle_runs = form.cleaned_data['runs']
            listing.vehicle_convertible = form.cleaned_data['convertible']
            listing.vehicle_modified = form.cleaned_data['modified']
            listing.save()

(Thus creating multiple listings) Apparently cleaned_data does not exist. There's a bunch of stuff in the data dict like form-0-year but it's pretty useless to me like that.

+1  A: 

Have you called vehicles_formset.is_valid() prior to your snippet above?

Additionally, using a ModelForm in your formset will allow you to get a listing instance from the form by simply doing listing = form.save(commit=False)

Wogan
Oh my god.... excellent ninja-debugging sir! I had indeed forgot to call `is_valid()`. Forgot that that added the `cleaned_data` info. The vehicle form is only a subset of the listing model, so I don't think I can use form.save(). Basically there is a bunch of listing data that they all have in common which I want to duplicate, and then just grab the other data from the vehicle forms.
Mark