11from django .db import models
22
3- from ...core .types .scalars import ID , Boolean , Float , Int , String
43from ...core .classtypes .enum import Enum
4+ from ...core .types .custom_scalars import DateTime , JSONString
5+ from ...core .types .definitions import List
6+ from ...core .types .scalars import ID , Boolean , Float , Int , String
57from ...utils import to_const
6- from .compat import RelatedObject , UUIDField
8+ from .compat import (ArrayField , HStoreField , JSONField , RangeField ,
9+ RelatedObject , UUIDField )
710from .utils import get_related_model , import_single_dispatch
811
912singledispatch = import_single_dispatch ()
@@ -30,13 +33,13 @@ def convert_django_field(field):
3033 (field , field .__class__ ))
3134
3235
33- @convert_django_field .register (models .DateField )
3436@convert_django_field .register (models .CharField )
3537@convert_django_field .register (models .TextField )
3638@convert_django_field .register (models .EmailField )
3739@convert_django_field .register (models .SlugField )
3840@convert_django_field .register (models .URLField )
3941@convert_django_field .register (models .GenericIPAddressField )
42+ @convert_django_field .register (models .FileField )
4043@convert_django_field .register (UUIDField )
4144def convert_field_to_string (field ):
4245 return String (description = field .help_text )
@@ -72,6 +75,11 @@ def convert_field_to_float(field):
7275 return Float (description = field .help_text )
7376
7477
78+ @convert_django_field .register (models .DateField )
79+ def convert_date_to_string (field ):
80+ return DateTime (description = field .help_text )
81+
82+
7583@convert_django_field .register (models .ManyToManyField )
7684@convert_django_field .register (models .ManyToOneRel )
7785@convert_django_field .register (models .ManyToManyRel )
@@ -94,3 +102,21 @@ def convert_relatedfield_to_djangomodel(field):
94102def convert_field_to_djangomodel (field ):
95103 from .fields import DjangoModelField
96104 return DjangoModelField (get_related_model (field ), description = field .help_text )
105+
106+
107+ @convert_django_field .register (ArrayField )
108+ def convert_postgres_array_to_list (field ):
109+ base_type = convert_django_field (field .base_field )
110+ return List (base_type , description = field .help_text )
111+
112+
113+ @convert_django_field .register (HStoreField )
114+ @convert_django_field .register (JSONField )
115+ def convert_posgres_field_to_string (field ):
116+ return JSONString (description = field .help_text )
117+
118+
119+ @convert_django_field .register (RangeField )
120+ def convert_posgres_range_to_string (field ):
121+ inner_type = convert_django_field (field .base_field )
122+ return List (inner_type , description = field .help_text )
0 commit comments