'For backwards-compatibility, several types of fields need to be
excluded from model validation. See the following tickets for
details: #12507, #12521, #12553'

def _get_validation_exclusions(self):

    exclude = []
    for f in self.instance._meta.fields:
        field = f.name
        if (field not in self.fields):
            exclude.append(f.name)
        elif (self._meta.fields and (field not in self._meta.fields)):
            exclude.append(f.name)
        elif (self._meta.exclude and (field in self._meta.exclude)):
            exclude.append(f.name)
        elif (field in self._errors.keys()):
            exclude.append(f.name)
        else:
            form_field = self.fields[field]
            field_value = self.cleaned_data.get(field, None)
            if ((not f.blank) and (not form_field.required) and (field_value in EMPTY_VALUES)):
                exclude.append(f.name)
    return exclude
