|
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