Run all field validators and return a dict of errors.

        The keys of the resulting dict coorespond to field
        names. instance can be a dict (ie, form.cleaned_data), a form,
        a formset, or a model instance.

        If instance is a form, full_clean() will be called if the form
        is bound.

        If instance is a formset, full_clean() will be called on each
        member form, if bound.

def errors(self, instance):
        """Run all field validators and return a dict of errors.

        The keys of the resulting dict coorespond to field
        names. instance can be a dict (ie, form.cleaned_data), a form,
        a formset, or a model instance.

        If instance is a form, full_clean() will be called if the form
        is bound.

        If instance is a formset, full_clean() will be called on each
        member form, if bound.
        """

        if isinstance(instance, dict):
            return self._validate(instance)

        elif isinstance(instance, forms.BaseForm):
            if instance.is_bound and instance.is_valid():
                return self._validate(instance.cleaned_data)

            return self._validate(dict(
                [
                    (f, instance.initial.get(f, instance[f].value()))
                    for f in self.validators
                    ]
                ))

        elif isinstance(instance, formsets.BaseFormSet):
            if instance.can_delete:
                validate_forms = [
                    form for form in instance.initial_forms
                    if not instance._should_delete_form(form)
                    ] + [
                    form for form in instance.extra_forms
                    if (form.has_changed() and
                        not instance._should_delete_form(form))
                    ]

                return [
                    self.errors(f)
                    for f in validate_forms
                    ]
            else:
                validate_forms = instance.initial_forms + [
                    form for form in instance.extra_forms
                    if form.has_changed()
                    ]
                return [self.errors(f) for f in validate_forms]

        elif isinstance(instance, models.Model):
            return self._validate(dict(
                [(f, getattr(instance, f)) for f in self.validators]
                ))