1
1
from __future__ import absolute_import
2
2
3
+ import mongoengine
3
4
from collections import OrderedDict
4
5
from functools import partial , reduce
5
6
@@ -72,8 +73,7 @@ def args(self):
72
73
def args (self , args ):
73
74
self ._base_args = args
74
75
75
- @property
76
- def field_args (self ):
76
+ def _field_args (self , items ):
77
77
def is_filterable (v ):
78
78
return not isinstance (v , (ConnectionField , Dynamic ))
79
79
@@ -82,15 +82,19 @@ def get_type(v):
82
82
return v .type .of_type ()
83
83
return v .type ()
84
84
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 ())
87
90
88
91
@property
89
92
def reference_args (self ):
90
93
def get_reference_field (r , kv ):
91
94
if callable (getattr (kv [1 ], 'get_type' , None )):
92
95
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 ()})
94
98
return r
95
99
return reduce (get_reference_field , self .fields .items (), {})
96
100
@@ -105,7 +109,6 @@ def get_query(cls, model, info, **args):
105
109
return [], 0
106
110
107
111
objs = model .objects ()
108
-
109
112
if args :
110
113
reference_fields = get_model_reference_fields (model )
111
114
reference_args = {}
0 commit comments