diff --git a/django_elasticsearch/managers.py b/django_elasticsearch/managers.py index edf2718..d8b1105 100644 --- a/django_elasticsearch/managers.py +++ b/django_elasticsearch/managers.py @@ -87,12 +87,22 @@ def check_cluster(self): def get_serializer(self, **kwargs): serializer = self.model.Elasticsearch.serializer_class - if isinstance(serializer, basestring): - module, kls = self.model.Elasticsearch.serializer_class.rsplit(".", 1) - mod = importlib.import_module(module) - return getattr(mod, kls)(self.model, **kwargs) - else: - return serializer(self.model, **kwargs) + + # python 2.x + try: + if isinstance(serializer, basestring): + module, kls = self.model.Elasticsearch.serializer_class.rsplit(".", 1) + mod = importlib.import_module(module) + return getattr(mod, kls)(self.model, **kwargs) + + # python 3.x + except NameError: + if isinstance(serializer, str): + module, kls = self.model.Elasticsearch.serializer_class.rsplit(".", 1) + mod = importlib.import_module(module) + return getattr(mod, kls)(self.model, **kwargs) + + return serializer(self.model, **kwargs) @needs_instance def serialize(self): diff --git a/django_elasticsearch/serializers.py b/django_elasticsearch/serializers.py index 474e64e..2a8d04f 100644 --- a/django_elasticsearch/serializers.py +++ b/django_elasticsearch/serializers.py @@ -4,6 +4,13 @@ from django.db.models import FieldDoesNotExist from django.db.models.fields.related import ManyToManyField +try: + # python 2.x + UNICODE_PY2X = bool(type(unicode)) +except NameError: + # python 3.x + unicode = lambda s: str(s) + class EsSerializer(object): def serialize(self, instance):