      def db_parameters(self, connection):
          return {"type": self.db_type(connection), "check": self.db_check(connection)}
  
      def convert_empty_strings(self, value, expression, connection, context):
          if (not value) and isinstance(value, six.string_types):
              return None
          return value
  
      def get_db_converters(self, connection):
          converters = super(ForeignKey, self).get_db_converters(connection)
 
</s> remove         return six.text_type(value.title)
 </s> add         return str(value.title) </s> remove             return self.delimiter.join(six.text_type(self.base_field.prepare_value(v)) for v in value)
 </s> add             return self.delimiter.join(str(self.base_field.prepare_value(v)) for v in value) </s> remove         if default_unit and isinstance(default_unit, six.string_types):
 </s> add         if default_unit and isinstance(default_unit, str): </s> remove         if value and isinstance(value, six.string_types):
 </s> add         if value and isinstance(value, str): </s> remove         if isinstance(value, six.string_types):
 </s> add         if isinstance(value, str):
        if (not value) and isinstance(value, str):
      def db_parameters(self, connection):
          return {"type": self.db_type(connection), "check": self.db_check(connection)}
  
      def convert_empty_strings(self, value, expression, connection, context):
        if (not value) and isinstance(value, str):
              return None
          return value
  
      def get_db_converters(self, connection):
          converters = super(ForeignKey, self).get_db_converters(connection)
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