From f585518cc11610561ad10eb563d365defee8300e Mon Sep 17 00:00:00 2001 From: Jacob Foster Date: Wed, 19 Jul 2017 14:20:19 -0500 Subject: [PATCH] Account for edges/node nesting in ast --- graphene_django/optimization.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/graphene_django/optimization.py b/graphene_django/optimization.py index f66d387..ecbb0e9 100644 --- a/graphene_django/optimization.py +++ b/graphene_django/optimization.py @@ -17,9 +17,21 @@ def model_fields_as_dict(model): return dict((f.name, f) for f in model._meta.get_fields()) +def find_model_selections(ast): + selections = ast.selection_set.selections + + for selection in selections: + if selection.name.value == 'edges': + for sub_selection in selection.selection_set.selections: + if sub_selection.name.value == 'node': + return sub_selection.selection_set.selections + + return selections + + def get_related_fetches_for_model(model, graphql_ast): model_fields = model_fields_as_dict(model) - selections = graphql_ast.selection_set.selections + selections = find_model_selections(graphql_ast) graphene_obj_type = REGISTRY.get_type_for_model(model) optimizations = {}