@@ -64,10 +64,8 @@ def order_by(self):
64
64
return self .node_type ._meta .order_by
65
65
66
66
@property
67
- def only_fields (self ):
68
- if isinstance (self .node_type ._meta .only_fields , str ):
69
- return self .node_type ._meta .only_fields .split ("," )
70
- return list ()
67
+ def required_fields (self ):
68
+ return tuple (set (self .node_type ._meta .required_fields + self .node_type ._meta .only_fields ))
71
69
72
70
@property
73
71
def registry (self ):
@@ -190,7 +188,7 @@ def get_reference_field(r, kv):
190
188
def fields (self ):
191
189
return self ._type ._meta .fields
192
190
193
- def get_queryset (self , model , info , only_fields = list (), ** args ):
191
+ def get_queryset (self , model , info , required_fields = list (), ** args ):
194
192
if args :
195
193
reference_fields = get_model_reference_fields (self .model )
196
194
hydrated_references = {}
@@ -209,9 +207,9 @@ def get_queryset(self, model, info, only_fields=list(), **args):
209
207
else :
210
208
args .update (queryset_or_filters )
211
209
212
- return model .objects (** args ).no_dereference ().only (* only_fields ).order_by (self .order_by )
210
+ return model .objects (** args ).no_dereference ().only (* required_fields ).order_by (self .order_by )
213
211
214
- def default_resolver (self , _root , info , only_fields = list (), ** args ):
212
+ def default_resolver (self , _root , info , required_fields = list (), ** args ):
215
213
args = args or {}
216
214
217
215
if _root is not None :
@@ -232,7 +230,7 @@ def default_resolver(self, _root, info, only_fields=list(), **args):
232
230
args ['pk' ] = from_global_id (_id )[- 1 ]
233
231
234
232
if callable (getattr (self .model , "objects" , None )):
235
- iterables = self .get_queryset (self .model , info , only_fields , ** args )
233
+ iterables = self .get_queryset (self .model , info , required_fields , ** args )
236
234
if isinstance (info , ResolveInfo ):
237
235
if not info .context :
238
236
info .context = Context ()
@@ -256,13 +254,13 @@ def default_resolver(self, _root, info, only_fields=list(), **args):
256
254
return connection
257
255
258
256
def chained_resolver (self , resolver , is_partial , root , info , ** args ):
259
- only_fields = list ()
260
- for field in self .only_fields :
257
+ required_fields = list ()
258
+ for field in self .required_fields :
261
259
if field in self .model ._fields_ordered :
262
- only_fields .append (field )
260
+ required_fields .append (field )
263
261
for field in get_query_fields (info ):
264
262
if to_snake_case (field ) in self .model ._fields_ordered :
265
- only_fields .append (to_snake_case (field ))
263
+ required_fields .append (to_snake_case (field ))
266
264
if not bool (args ) or not is_partial :
267
265
if isinstance (self .model , mongoengine .Document ) or isinstance (self .model ,
268
266
mongoengine .base .metaclasses .TopLevelDocumentMetaclass ):
@@ -273,7 +271,7 @@ def chained_resolver(self, resolver, is_partial, root, info, **args):
273
271
if isinstance (info , ResolveInfo ):
274
272
if not info .context :
275
273
info .context = Context ()
276
- info .context .queryset = self .get_queryset (self .model , info , only_fields , ** args_copy )
274
+ info .context .queryset = self .get_queryset (self .model , info , required_fields , ** args_copy )
277
275
# XXX: Filter nested args
278
276
resolved = resolver (root , info , ** args )
279
277
if resolved is not None :
@@ -284,7 +282,7 @@ def chained_resolver(self, resolver, is_partial, root, info, **args):
284
282
return resolved
285
283
else :
286
284
return resolved
287
- return self .default_resolver (root , info , only_fields , ** args )
285
+ return self .default_resolver (root , info , required_fields , ** args )
288
286
289
287
@classmethod
290
288
def connection_resolver (cls , resolver , connection_type , root , info , ** args ):
0 commit comments