Skip to content

Commit 20255ab

Browse files
[Bug Fix] Removed __typename before querying DB
1 parent ce31dab commit 20255ab

File tree

1 file changed

+33
-13
lines changed

1 file changed

+33
-13
lines changed

graphene_mongo/converter.py

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,14 @@ def get_reference_objects(*args, **kwargs):
110110
document = get_document(args[0][0])
111111
document_field = mongoengine.ReferenceField(document)
112112
document_field = convert_mongoengine_field(document_field, registry)
113-
document_field_type = document_field.get_type().type._meta.name
114-
required_fields = [to_snake_case(i) for i in
115-
get_query_fields(args[0][3][0])[document_field_type].keys()]
116-
return document.objects().no_dereference().only(*required_fields).filter(pk__in=args[0][1])
113+
document_field_type = document_field.get_type().type
114+
queried_fields = list()
115+
for each in get_query_fields(args[0][3][0])[document_field_type._meta.name].keys():
116+
item = to_snake_case(each)
117+
if item in document._fields_ordered:
118+
queried_fields.append(item)
119+
return document.objects().no_dereference().only(
120+
*set(list(document_field_type._meta.required_fields) + queried_fields)).filter(pk__in=args[0][1])
117121

118122
def get_non_querying_object(*args, **kwargs):
119123
model = get_document(args[0][0])
@@ -228,9 +232,13 @@ def reference_resolver(root, *args, **kwargs):
228232
querying_types = list(get_query_fields(args[0]).keys())
229233
_type = document_field.get_type().type
230234
if _type.__name__ in querying_types:
235+
queried_fields = list()
236+
for each in get_query_fields(args[0]).keys():
237+
item = to_snake_case(each)
238+
if item in document._fields_ordered:
239+
queried_fields.append(item)
231240
return document.objects().no_dereference().only(*list(
232-
set(list(_type._meta.required_fields) + [to_snake_case(i) for i in
233-
get_query_fields(args[0])[_type._meta.name].keys()]))).get(
241+
set(list(_type._meta.required_fields) + queried_fields))).get(
234242
pk=de_referenced["_ref"].id)
235243
return document
236244
return None
@@ -258,20 +266,28 @@ def convert_field_to_dynamic(field, registry=None):
258266
def reference_resolver(root, *args, **kwargs):
259267
document = getattr(root, field.name or field.db_name)
260268
if document:
269+
queried_fields = list()
270+
for each in get_query_fields(args[0]).keys():
271+
item = to_snake_case(each)
272+
if item in field.document_type._fields_ordered:
273+
queried_fields.append(item)
261274
_type = registry.get_type_for_model(field.document_type)
262275
return field.document_type.objects().no_dereference().only(
263-
*((list(set(list(_type._meta.required_fields) + [to_snake_case(i) for i in
264-
get_query_fields(args[0]).keys()]))))).get(
276+
*(set(list(_type._meta.required_fields) + queried_fields))).get(
265277
pk=document.id)
266278
return None
267279

268280
def cached_reference_resolver(root, *args, **kwargs):
269281
if field:
282+
queried_fields = list()
283+
for each in get_query_fields(args[0]).keys():
284+
item = to_snake_case(each)
285+
if item in field.document_type._fields_ordered:
286+
queried_fields.append(item)
270287
_type = registry.get_type_for_model(field.document_type)
271288
return field.document_type.objects().no_dereference().only(
272-
*(list(set(
273-
list(_type._meta.required_fields) + [to_snake_case(i) for i in
274-
get_query_fields(args[0]).keys()])))).get(
289+
*(set(
290+
list(_type._meta.required_fields) + queried_fields))).get(
275291
pk=getattr(root, field.name or field.db_name))
276292
return None
277293

@@ -306,10 +322,14 @@ def convert_lazy_field_to_dynamic(field, registry=None):
306322
def lazy_resolver(root, *args, **kwargs):
307323
document = getattr(root, field.name or field.db_name)
308324
if document:
325+
queried_fields = list()
326+
for each in get_query_fields(args[0]).keys():
327+
item = to_snake_case(each)
328+
if item in document.document_type._fields_ordered:
329+
queried_fields.append(item)
309330
_type = registry.get_type_for_model(document.document_type)
310331
return document.document_type.objects().no_dereference().only(
311-
*(list(set((list(_type._meta.required_fields) + [to_snake_case(i) for i in
312-
get_query_fields(args[0]).keys()]))))).get(
332+
*(set((list(_type._meta.required_fields) + queried_fields)))).get(
313333
pk=document.pk)
314334
return None
315335

0 commit comments

Comments
 (0)