@@ -108,14 +108,20 @@ def convert_django_field_with_choices(
108
108
if choices and convert_choices_to_enum :
109
109
enum = convert_choice_field_to_enum (field )
110
110
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
+ )
112
114
else :
113
115
converted = convert_django_field (field , registry )
114
116
if registry is not None :
115
117
registry .register_converted_field (field , converted )
116
118
return converted
117
119
118
120
121
+ def get_django_field_description (field ):
122
+ return None if field .help_text is None else str (field .help_text )
123
+
124
+
119
125
@singledispatch
120
126
def convert_django_field (field , registry = None ):
121
127
raise Exception (
@@ -132,17 +138,21 @@ def convert_django_field(field, registry=None):
132
138
@convert_django_field .register (models .FileField )
133
139
@convert_django_field .register (models .FilePathField )
134
140
def 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
+ )
136
144
137
145
138
146
@convert_django_field .register (models .AutoField )
139
147
def 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 )
141
149
142
150
143
151
@convert_django_field .register (models .UUIDField )
144
152
def 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
+ )
146
156
147
157
148
158
@convert_django_field .register (models .PositiveIntegerField )
@@ -151,35 +161,45 @@ def convert_field_to_uuid(field, registry=None):
151
161
@convert_django_field .register (models .BigIntegerField )
152
162
@convert_django_field .register (models .IntegerField )
153
163
def 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 )
155
165
156
166
157
167
@convert_django_field .register (models .NullBooleanField )
158
168
@convert_django_field .register (models .BooleanField )
159
169
def 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
+ )
161
173
162
174
163
175
@convert_django_field .register (models .DecimalField )
164
176
@convert_django_field .register (models .FloatField )
165
177
@convert_django_field .register (models .DurationField )
166
178
def 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
+ )
168
182
169
183
170
184
@convert_django_field .register (models .DateTimeField )
171
185
def 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
+ )
173
189
174
190
175
191
@convert_django_field .register (models .DateField )
176
192
def 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
+ )
178
196
179
197
180
198
@convert_django_field .register (models .TimeField )
181
199
def 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
+ )
183
203
184
204
185
205
@convert_django_field .register (models .OneToOneRel )
@@ -250,7 +270,11 @@ def dynamic_type():
250
270
if not _type :
251
271
return
252
272
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
+ )
254
278
255
279
return Dynamic (dynamic_type )
256
280
@@ -260,21 +284,31 @@ def convert_postgres_array_to_list(field, registry=None):
260
284
base_type = convert_django_field (field .base_field )
261
285
if not isinstance (base_type , (List , NonNull )):
262
286
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
+ )
264
292
265
293
266
294
@convert_django_field .register (HStoreField )
267
295
@convert_django_field .register (JSONField )
268
296
def 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
+ )
270
300
271
301
272
302
@convert_django_field .register (RangeField )
273
303
def convert_postgres_range_to_string (field , registry = None ):
274
304
inner_type = convert_django_field (field .base_field )
275
305
if not isinstance (inner_type , (List , NonNull )):
276
306
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
+ )
278
312
279
313
280
314
# Register Django lazy()-wrapped values as GraphQL description/help_text.
0 commit comments