Skip to content

Commit 3b16cf9

Browse files
Bug fix - Default Resolver - List of Generic Lazy Reference Field
1 parent b7ff656 commit 3b16cf9

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

graphene_mongo/converter.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from graphene.types.json import JSONString
66
from graphene.utils.str_converters import to_snake_case
7-
from mongoengine.base import get_document
7+
from mongoengine.base import get_document, LazyReference
88
from . import advanced_types
99
from .utils import import_single_dispatch, get_field_description, get_query_fields
1010
from concurrent.futures import ThreadPoolExecutor, as_completed
@@ -138,10 +138,19 @@ def reference_resolver(root, *args, **kwargs):
138138
to_resolve_models = list()
139139
for each in querying_union_types:
140140
to_resolve_models.append(registry._registry_string_map[each])
141+
to_resolve_object_ids = list()
141142
for each in to_resolve:
142-
if each['_cls'] not in choice_to_resolve:
143-
choice_to_resolve[each['_cls']] = list()
144-
choice_to_resolve[each['_cls']].append(each["_ref"].id)
143+
if isinstance(each, LazyReference):
144+
to_resolve_object_ids.append(each.pk)
145+
model = each.document_type._class_name
146+
if model not in choice_to_resolve:
147+
choice_to_resolve[model] = list()
148+
choice_to_resolve[model].append(each.pk)
149+
else:
150+
to_resolve_object_ids.append(each["_ref"].id)
151+
if each['_cls'] not in choice_to_resolve:
152+
choice_to_resolve[each['_cls']] = list()
153+
choice_to_resolve[each['_cls']].append(each["_ref"].id)
145154
pool = ThreadPoolExecutor(5)
146155
futures = list()
147156
for model, object_id_list in choice_to_resolve.items():
@@ -153,7 +162,6 @@ def reference_resolver(root, *args, **kwargs):
153162
result = list()
154163
for x in as_completed(futures):
155164
result += x.result()
156-
to_resolve_object_ids = [each["_ref"].id for each in to_resolve]
157165
result_object_ids = list()
158166
for each in result:
159167
result_object_ids.append(each.id)

0 commit comments

Comments
 (0)