import types def get_form_display_data(form, exclude=None): """ A generator for getting user displayable data from a (bound) form instance. Optionally, you can exclude specific fields from the result. """ cleaned_data = form.cleaned_data for field in form: if exclude and field.name in exclude: continue value = field.value() or '' if hasattr(field.field, 'choices'): if isinstance(value, types.StringTypes): # One choice only value = next(v for k, v in field.field.choices if k == value) else: # Multiple choices value = u', '.join(v for k, v in field.field.choices if k in value) yield (field.label, value)