                   db_constraint=True, **kwargs):
          try:
              to._meta.model_name
          except AttributeError:
              assert isinstance(to, six.string_types), (
                  "%s(%r) is invalid. First parameter to ForeignKey must be "
                  "either a model, a model name, or the string %r" % (
                      self.__class__.__name__, to,
                      RECURSIVE_RELATIONSHIP_CONSTANT,
                  )
 
</s> remove             assert isinstance(to, six.string_types), (
 </s> add             assert isinstance(to, str), ( </s> remove             # Class names must be ASCII in Python 2.x, so we forcibly coerce it
            # here to break early if there's a problem.
            to = str(to)
 </s> add  </s> remove from django.utils import six


 </s> add  </s> remove         if isinstance(expected_data, six.string_types):
 </s> add         if isinstance(expected_data, str): </s> remove         if isinstance(expected_data, six.string_types):
 </s> add         if isinstance(expected_data, str):
            assert isinstance(to, str), (
                   db_constraint=True, **kwargs):
          try:
              to._meta.model_name
          except AttributeError:
            assert isinstance(to, str), (
                  "%s(%r) is invalid. First parameter to ForeignKey must be "
                  "either a model, a model name, or the string %r" % (
                      self.__class__.__name__, to,
                      RECURSIVE_RELATIONSHIP_CONSTANT,
                  )
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