Skip to content

Commit 25de313

Browse files
committed
Add converter for django 3.1 JSONField
1 parent b552dca commit 25de313

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

graphene_django/compat.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,14 @@ class MissingType(object):
88
from django.contrib.postgres.fields import (
99
ArrayField,
1010
HStoreField,
11-
JSONField,
11+
JSONField as PGJSONField,
1212
RangeField,
1313
)
1414
except ImportError:
15-
ArrayField, HStoreField, JSONField, RangeField = (MissingType,) * 4
15+
ArrayField, HStoreField, PGJSONField, RangeField = (MissingType,) * 4
16+
17+
try:
18+
# JSONField is only available from Django 3.1
19+
from django.contrib.fields import JSONField
20+
except ImportError:
21+
JSONField = MissingType

graphene_django/converter.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from graphql import assert_valid_name
2525

2626
from .settings import graphene_settings
27-
from .compat import ArrayField, HStoreField, JSONField, RangeField
27+
from .compat import ArrayField, HStoreField, JSONField, PGJSONField, RangeField
2828
from .fields import DjangoListField, DjangoConnectionField
2929
from .utils import import_single_dispatch
3030
from .utils.str_converters import to_const
@@ -267,8 +267,9 @@ def convert_postgres_array_to_list(field, registry=None):
267267

268268

269269
@convert_django_field.register(HStoreField)
270+
@convert_django_field.register(PGJSONField)
270271
@convert_django_field.register(JSONField)
271-
def convert_postgres_field_to_string(field, registry=None):
272+
def convert_pg_and_json_field_to_string(field, registry=None):
272273
return JSONString(description=field.help_text, required=not field.null)
273274

274275

graphene_django/tests/test_converter.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,14 @@
1111
from graphene.types.datetime import Date, DateTime, Time
1212
from graphene.types.json import JSONString
1313

14-
from ..compat import ArrayField, HStoreField, JSONField, MissingType, RangeField
14+
from ..compat import (
15+
ArrayField,
16+
HStoreField,
17+
JSONField,
18+
PGJSONField,
19+
MissingType,
20+
RangeField,
21+
)
1522
from ..converter import (
1623
convert_django_field,
1724
convert_django_field_with_choices,
@@ -348,8 +355,13 @@ def test_should_postgres_hstore_convert_string():
348355
assert_conversion(HStoreField, JSONString)
349356

350357

351-
@pytest.mark.skipif(JSONField is MissingType, reason="JSONField should exist")
358+
@pytest.mark.skipif(PGJSONField is MissingType, reason="PGJSONField should exist")
352359
def test_should_postgres_json_convert_string():
360+
assert_conversion(PGJSONField, JSONString)
361+
362+
363+
@pytest.mark.skipif(JSONField is MissingType, reason="JSONField should exist")
364+
def test_should_json_convert_string():
353365
assert_conversion(JSONField, JSONString)
354366

355367

0 commit comments

Comments
 (0)