On a recent project, I was making use of the django-formwizard app and needed to be able to pull out any one of the fields from the series of forms. On the final step of one of the sample apps, it is suggested that you do something like:

form_list = [form.cleaned_data for form in form_list]

to get a combined dictionary of all the form elements.

The problem is that each field is still part of its parent form, which is annoying if you want to treat the series of forms as a single dictionary.

To combine them into a single dictionary you can use the update() method, which updates a dictionary with key/value pairs from b, overwriting existing keys:

d = {} # new dictionary
    for forms in [form.cleaned_data for form in form_list]:
        d.update(form)

Now you can access any number of the form fields from a single dictionary:

name = d.get('name')
email = d.get('email')

Update from @davidwtbuxton:
One-liner for merging several forms’ dictionaries:

d = dict((k, v) for f in forms for k, v in f.cleaned_data.items())

Another Update from django-formwizard author @stephrdev:
There’s actually a method called get_all_cleaned_data that will return “a merged dictionary of all step’ cleaned_data dictionaries. If a step contains a `FormSet`, the key will be prefixed with formset and contain a list of the formset’ cleaned_data dictionaries.” Perfect!