11from __future__ import absolute_import
22
3+ import mongoengine
34from collections import OrderedDict
45from functools import partial , reduce
56
@@ -72,8 +73,7 @@ def args(self):
7273 def args (self , args ):
7374 self ._base_args = args
7475
75- @property
76- def field_args (self ):
76+ def _field_args (self , items ):
7777 def is_filterable (v ):
7878 return not isinstance (v , (ConnectionField , Dynamic ))
7979
@@ -82,15 +82,19 @@ def get_type(v):
8282 return v .type .of_type ()
8383 return v .type ()
8484
85- return {k : get_type (v ) for k , v in self .fields .items ()
86- if is_filterable (v )}
85+ return {k : get_type (v ) for k , v in items if is_filterable (v )}
86+
87+ @property
88+ def field_args (self ):
89+ return self ._field_args (self .fields .items ())
8790
8891 @property
8992 def reference_args (self ):
9093 def get_reference_field (r , kv ):
9194 if callable (getattr (kv [1 ], 'get_type' , None )):
9295 node = kv [1 ].get_type ()._type ._meta
93- r .update ({kv [0 ]: node .fields ['id' ]._type .of_type ()})
96+ if not issubclass (node .model , mongoengine .EmbeddedDocument ):
97+ r .update ({kv [0 ]: node .fields ['id' ]._type .of_type ()})
9498 return r
9599 return reduce (get_reference_field , self .fields .items (), {})
96100
@@ -105,7 +109,6 @@ def get_query(cls, model, info, **args):
105109 return [], 0
106110
107111 objs = model .objects ()
108-
109112 if args :
110113 reference_fields = get_model_reference_fields (model )
111114 reference_args = {}
0 commit comments