|
11 | 11 | from graphene.types.argument import to_arguments |
12 | 12 |
|
13 | 13 |
|
| 14 | +from .utils import get_model_reference_fields |
| 15 | + |
| 16 | + |
14 | 17 | # noqa |
15 | 18 | class MongoengineListField(Field): |
16 | 19 |
|
@@ -60,7 +63,8 @@ def model(self): |
60 | 63 | @property |
61 | 64 | def args(self): |
62 | 65 | return to_arguments( |
63 | | - self._base_args or OrderedDict(), dict(self.field_args.items() + self.reference_args.items()) |
| 66 | + self._base_args or OrderedDict(), |
| 67 | + dict(self.field_args.items() + self.reference_args.items()) |
64 | 68 | ) |
65 | 69 |
|
66 | 70 | @args.setter |
@@ -103,8 +107,15 @@ def get_query(cls, model, info, **args): |
103 | 107 | return [] |
104 | 108 |
|
105 | 109 | objs = model.objects() |
106 | | - |
107 | 110 | if args: |
| 111 | + reference_fields = get_model_reference_fields(model) |
| 112 | + for arg_name, arg in args.items(): |
| 113 | + if arg_name in reference_fields: |
| 114 | + reference_model = model._fields[arg_name] |
| 115 | + pk = from_global_id(args.pop(arg_name))[-1] |
| 116 | + reference_obj = reference_model.document_type_obj.objects(pk=pk).get() |
| 117 | + args[arg_name] = reference_obj |
| 118 | + |
108 | 119 | first = args.pop('first', None) |
109 | 120 | last = args.pop('last', None) |
110 | 121 | id = args.pop('id', None) |
@@ -132,6 +143,7 @@ def get_query(cls, model, info, **args): |
132 | 143 | # https://github.com/graphql-python/graphene-mongo/issues/20 |
133 | 144 | objs = objs[-(last+1):] |
134 | 145 |
|
| 146 | + print(objs) |
135 | 147 | return objs |
136 | 148 |
|
137 | 149 | # noqa |
|
0 commit comments