'Backwards-compat comparison that ignores orm. on the RHS and not the left
and which knows django.db.models.fields.CharField = models.CharField.
Has a whole load of tests in tests/autodetection.py.'

@classmethod
def different_attributes(cls, old, new):

    if ((not cls.is_triple(old)) or (not cls.is_triple(new))):
        return (old != new)
    (old_field, old_pos, old_kwd) = old
    (new_field, new_pos, new_kwd) = new
    (old_pos, new_pos) = (old_pos[:], new_pos[:])
    old_kwd = dict(old_kwd.items())
    new_kwd = dict(new_kwd.items())
    if ('unique' in old_kwd):
        del old_kwd['unique']
    if ('unique' in new_kwd):
        del new_kwd['unique']
    if (old_field != new_field):
        if (old_field.startswith('models.') and (new_field.startswith('django.db.models') or new_field.startswith('django.contrib.gis'))):
            if (old_field.split('.')[(-1)] != new_field.split('.')[(-1)]):
                return True
            else:
                old_field = new_field = ''
    if ((old_pos and ('to' in new_kwd)) and (('orm' in new_kwd['to']) and ('orm' not in old_pos[0]))):
        try:
            if (old_pos[0] != new_kwd['to'].split("'")[1].split('.')[1]):
                return True
        except IndexError:
            pass
        old_pos = old_pos[1:]
        del new_kwd['to']
    return ((old_field != new_field) or (old_pos != new_pos) or (old_kwd != new_kwd))
