              cls._meta.add_field(self, private=True)
          else:
              cls._meta.add_field(self)
          if self.choices:
              setattr(cls, 'get_%s_display' % self.name,
                      curry(cls._get_FIELD_display, field=self))
  
 
</s> remove         if self._deferred:
            non_deferred_model = self._meta.proxy_for_model
        else:
            non_deferred_model = self.__class__
        db_instance_qs = non_deferred_model._default_manager.using(db).filter(pk=self.pk)
 </s> add         db_instance_qs = self.__class__._default_manager.using(db).filter(pk=self.pk) </s> remove                         setattr(self, prop, kwargs[prop])
 </s> add                         if kwargs[prop] is not DEFERRED:
                            setattr(self, prop, kwargs[prop]) </s> remove             if obj._deferred:
                obj = obj._meta.proxy_for_model
 </s> add  </s> remove                 if self.object._deferred:
                    object_meta = self.object._meta.proxy_for_model._meta
 </s> add  </s> remove         model = obj._meta.proxy_for_model if obj._deferred else obj.__class__
        attrs = OrderedDict([("model", smart_text(model._meta))])
 </s> add         attrs = OrderedDict([("model", smart_text(obj._meta))])
        if self.column:
            # Don't override classmethods with the descriptor. This means that
            # if you have a classmethod and a field with the same name, then
            # such fields can't be deferred (we don't have a check for this).
            if not getattr(cls, self.attname, None):
                setattr(cls, self.attname, DeferredAttribute(self.attname, cls))
              cls._meta.add_field(self, private=True)
          else:
              cls._meta.add_field(self)
        if self.column:
            # Don't override classmethods with the descriptor. This means that
            # if you have a classmethod and a field with the same name, then
            # such fields can't be deferred (we don't have a check for this).
            if not getattr(cls, self.attname, None):
                setattr(cls, self.attname, DeferredAttribute(self.attname, cls))
          if self.choices:
              setattr(cls, 'get_%s_display' % self.name,
                      curry(cls._get_FIELD_display, field=self))
  
keep keep add keep keep keep keep
 Fixed #26207 -- Replaced dynamic classes with non-data descriptors for deferred instance loading. 
django/db/models/fields/__init__.py