The metaclass definition did not work with Python 3, to_python wasn't called. Documented in: https://docs.djangoproject.com/en/dev/howto/custom-model-fields/#django.db.models.django.db.models.SubfieldBase Also clarified logic of the to_python logic.