          return []
  
      def _check_referencing_to_swapped_model(self):
          if (self.remote_field.model not in self.opts.apps.get_models() and
                  not isinstance(self.remote_field.model, six.string_types) and
                  self.remote_field.model._meta.swapped):
              model = "%s.%s" % (
                  self.remote_field.model._meta.app_label,
                  self.remote_field.model._meta.object_name
              )
 
</s> remove         rel_is_string = isinstance(self.remote_field.model, six.string_types)
 </s> add         rel_is_string = isinstance(self.remote_field.model, str) </s> remove         if isinstance(self.remote_field.model, six.string_types):
 </s> add         if isinstance(self.remote_field.model, str): </s> remove         if isinstance(self.remote_field.through, six.string_types) or not self.remote_field.through._meta.managed:
 </s> add         if isinstance(self.remote_field.through, str) or not self.remote_field.through._meta.managed: </s> remove         rel_is_string = isinstance(self.remote_field.model, six.string_types)
 </s> add         rel_is_string = isinstance(self.remote_field.model, str) </s> remove             if isinstance(self.remote_field.through, six.string_types):
 </s> add             if isinstance(self.remote_field.through, str):
                not isinstance(self.remote_field.model, str) and
          return []
  
      def _check_referencing_to_swapped_model(self):
          if (self.remote_field.model not in self.opts.apps.get_models() and
                not isinstance(self.remote_field.model, str) and
                  self.remote_field.model._meta.swapped):
              model = "%s.%s" % (
                  self.remote_field.model._meta.app_label,
                  self.remote_field.model._meta.object_name
              )
keep keep keep keep replace keep keep keep keep keep
 Refs #23919 -- Removed six.<various>_types usage

Thanks Tim Graham and Simon Charette for the reviews. 
django/db/models/fields/related.py