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)