The to_python logic of the field was not actually executed as the fields meta class wasn't set. That's also the reason why AbstractAddress explicitly called upper() again, which is redundant now that it works.