From b53653e9033b795c4e54d049d762e97bf8e76d5f Mon Sep 17 00:00:00 2001 From: Safwan Rahman Date: Fri, 1 Nov 2019 00:48:34 +0600 Subject: [PATCH 1/3] Adding support for postgres jsonfield --- django_elasticsearch_dsl/documents.py | 5 ++++- requirements.txt | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/django_elasticsearch_dsl/documents.py b/django_elasticsearch_dsl/documents.py index 719ec9c1..0ea548ba 100644 --- a/django_elasticsearch_dsl/documents.py +++ b/django_elasticsearch_dsl/documents.py @@ -5,6 +5,7 @@ from functools import partial from django import VERSION as DJANGO_VERSION +from django.contrib.postgres.fields import JSONField from django.db import models from django.utils.six import iteritems from elasticsearch.helpers import bulk, parallel_bulk @@ -22,7 +23,7 @@ LongField, ShortField, TextField, -) + ObjectField) from .search import Search model_field_class_to_field_class = { @@ -47,8 +48,10 @@ models.TextField: TextField, models.TimeField: LongField, models.URLField: TextField, + JSONField: ObjectField } + class DocType(DSLDocument): _prepared_fields = [] def __init__(self, related_instance_to_ignore=None, **kwargs): diff --git a/requirements.txt b/requirements.txt index cb1678c7..35b508fb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,5 @@ django>=1.9.6 elasticsearch-dsl>=7.0.0,<8.0.0 - +django-elasticsearch-dsl==7.1.0 \ + --hash=sha256:2fdae0d20f1b57196f6455d6eea9c556332cde35620622f6db5c224fd9ce2582 \ + --hash=sha256:38e3f7774c2b2dc1dcf19f24f083e6ca11304c2c3bcffba7e53027847c052529 From 1db7a4b9d5edbeff67bcdb1784f2b7aec9000241 Mon Sep 17 00:00:00 2001 From: Safwan Rahman Date: Fri, 1 Nov 2019 00:52:03 +0600 Subject: [PATCH 2/3] fixup --- requirements.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index 35b508fb..77ddcb3f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,2 @@ django>=1.9.6 elasticsearch-dsl>=7.0.0,<8.0.0 -django-elasticsearch-dsl==7.1.0 \ - --hash=sha256:2fdae0d20f1b57196f6455d6eea9c556332cde35620622f6db5c224fd9ce2582 \ - --hash=sha256:38e3f7774c2b2dc1dcf19f24f083e6ca11304c2c3bcffba7e53027847c052529 From f18a19e87c98b6a41a188c3b6774b2c692d195dc Mon Sep 17 00:00:00 2001 From: Safwan Rahman Date: Sat, 9 Nov 2019 00:42:02 +0600 Subject: [PATCH 3/3] Fixing import --- django_elasticsearch_dsl/documents.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/django_elasticsearch_dsl/documents.py b/django_elasticsearch_dsl/documents.py index 0ea548ba..ec7d37ee 100644 --- a/django_elasticsearch_dsl/documents.py +++ b/django_elasticsearch_dsl/documents.py @@ -5,7 +5,6 @@ from functools import partial from django import VERSION as DJANGO_VERSION -from django.contrib.postgres.fields import JSONField from django.db import models from django.utils.six import iteritems from elasticsearch.helpers import bulk, parallel_bulk @@ -48,12 +47,18 @@ models.TextField: TextField, models.TimeField: LongField, models.URLField: TextField, - JSONField: ObjectField } +try: + from django.contrib.postgres.fields import JSONField + model_field_class_to_field_class[JSONField] = ObjectField +except ImportError: + pass + class DocType(DSLDocument): _prepared_fields = [] + def __init__(self, related_instance_to_ignore=None, **kwargs): super(DocType, self).__init__(**kwargs) self._related_instance_to_ignore = related_instance_to_ignore