'First coerces all fields on this instance to their proper Python types.
Then runs validation on every field. Returns a dictionary of
field_name -> error_list.
Based on validate() from django.db.models.Model in Django 0.96, which
was removed in Django 1.0. It should reappear in a later version. See:
http://code.djangoproject.com/ticket/6845'

def _validate(self):

    error_dict = {}
    for f in self._meta.fields:
        try:
            python_value = f.to_python(getattr(self, f.attname, f.get_default()))
        except django.core.exceptions.ValidationError as e:
            error_dict[f.name] = str(e)
            continue
        if ((not f.blank) and (not python_value)):
            error_dict[f.name] = 'This    field    is    required.'
            continue
        setattr(self, f.attname, python_value)
    return error_dict
