'Saves all the parents of cls using values from self.'

def _save_parents(self, cls, using, update_fields):

    meta = cls._meta
    for (parent, field) in meta.parents.items():
        if (field and (getattr(self, parent._meta.pk.attname) is None) and (getattr(self, field.attname) is not None)):
            setattr(self, parent._meta.pk.attname, getattr(self, field.attname))
        self._save_parents(cls=parent, using=using, update_fields=update_fields)
        self._save_table(cls=parent, using=using, update_fields=update_fields)
        if field:
            setattr(self, field.attname, self._get_pk_val(parent._meta))
            cache_name = field.get_cache_name()
            if hasattr(self, cache_name):
                delattr(self, cache_name)
