@@ -108,14 +108,20 @@ def convert_django_field_with_choices(
108108 if choices and convert_choices_to_enum :
109109 enum = convert_choice_field_to_enum (field )
110110 required = not (field .blank or field .null )
111- converted = enum (description = field .help_text , required = required )
111+ converted = enum (
112+ description = get_django_field_description (field ), required = required
113+ )
112114 else :
113115 converted = convert_django_field (field , registry )
114116 if registry is not None :
115117 registry .register_converted_field (field , converted )
116118 return converted
117119
118120
121+ def get_django_field_description (field ):
122+ return None if field .help_text is None else str (field .help_text )
123+
124+
119125@singledispatch
120126def convert_django_field (field , registry = None ):
121127 raise Exception (
@@ -132,17 +138,21 @@ def convert_django_field(field, registry=None):
132138@convert_django_field .register (models .FileField )
133139@convert_django_field .register (models .FilePathField )
134140def convert_field_to_string (field , registry = None ):
135- return String (description = field .help_text , required = not field .null )
141+ return String (
142+ description = get_django_field_description (field ), required = not field .null
143+ )
136144
137145
138146@convert_django_field .register (models .AutoField )
139147def convert_field_to_id (field , registry = None ):
140- return ID (description = field . help_text , required = not field .null )
148+ return ID (description = get_django_field_description ( field ) , required = not field .null )
141149
142150
143151@convert_django_field .register (models .UUIDField )
144152def convert_field_to_uuid (field , registry = None ):
145- return UUID (description = field .help_text , required = not field .null )
153+ return UUID (
154+ description = get_django_field_description (field ), required = not field .null
155+ )
146156
147157
148158@convert_django_field .register (models .PositiveIntegerField )
@@ -151,35 +161,45 @@ def convert_field_to_uuid(field, registry=None):
151161@convert_django_field .register (models .BigIntegerField )
152162@convert_django_field .register (models .IntegerField )
153163def convert_field_to_int (field , registry = None ):
154- return Int (description = field . help_text , required = not field .null )
164+ return Int (description = get_django_field_description ( field ) , required = not field .null )
155165
156166
157167@convert_django_field .register (models .NullBooleanField )
158168@convert_django_field .register (models .BooleanField )
159169def convert_field_to_boolean (field , registry = None ):
160- return Boolean (description = field .help_text , required = not field .null )
170+ return Boolean (
171+ description = get_django_field_description (field ), required = not field .null
172+ )
161173
162174
163175@convert_django_field .register (models .DecimalField )
164176@convert_django_field .register (models .FloatField )
165177@convert_django_field .register (models .DurationField )
166178def convert_field_to_float (field , registry = None ):
167- return Float (description = field .help_text , required = not field .null )
179+ return Float (
180+ description = get_django_field_description (field ), required = not field .null
181+ )
168182
169183
170184@convert_django_field .register (models .DateTimeField )
171185def convert_datetime_to_string (field , registry = None ):
172- return DateTime (description = field .help_text , required = not field .null )
186+ return DateTime (
187+ description = get_django_field_description (field ), required = not field .null
188+ )
173189
174190
175191@convert_django_field .register (models .DateField )
176192def convert_date_to_string (field , registry = None ):
177- return Date (description = field .help_text , required = not field .null )
193+ return Date (
194+ description = get_django_field_description (field ), required = not field .null
195+ )
178196
179197
180198@convert_django_field .register (models .TimeField )
181199def convert_time_to_string (field , registry = None ):
182- return Time (description = field .help_text , required = not field .null )
200+ return Time (
201+ description = get_django_field_description (field ), required = not field .null
202+ )
183203
184204
185205@convert_django_field .register (models .OneToOneRel )
@@ -250,7 +270,11 @@ def dynamic_type():
250270 if not _type :
251271 return
252272
253- return Field (_type , description = field .help_text , required = not field .null )
273+ return Field (
274+ _type ,
275+ description = get_django_field_description (field ),
276+ required = not field .null ,
277+ )
254278
255279 return Dynamic (dynamic_type )
256280
@@ -260,21 +284,31 @@ def convert_postgres_array_to_list(field, registry=None):
260284 base_type = convert_django_field (field .base_field )
261285 if not isinstance (base_type , (List , NonNull )):
262286 base_type = type (base_type )
263- return List (base_type , description = field .help_text , required = not field .null )
287+ return List (
288+ base_type ,
289+ description = get_django_field_description (field ),
290+ required = not field .null ,
291+ )
264292
265293
266294@convert_django_field .register (HStoreField )
267295@convert_django_field .register (JSONField )
268296def convert_postgres_field_to_string (field , registry = None ):
269- return JSONString (description = field .help_text , required = not field .null )
297+ return JSONString (
298+ description = get_django_field_description (field ), required = not field .null
299+ )
270300
271301
272302@convert_django_field .register (RangeField )
273303def convert_postgres_range_to_string (field , registry = None ):
274304 inner_type = convert_django_field (field .base_field )
275305 if not isinstance (inner_type , (List , NonNull )):
276306 inner_type = type (inner_type )
277- return List (inner_type , description = field .help_text , required = not field .null )
307+ return List (
308+ inner_type ,
309+ description = get_django_field_description (field ),
310+ required = not field .null ,
311+ )
278312
279313
280314# Register Django lazy()-wrapped values as GraphQL description/help_text.
0 commit comments