From 7cbd5e2139c8896ad4c626160027457dd98eaf61 Mon Sep 17 00:00:00 2001 From: Christian Reiter Date: Mon, 26 Dec 2016 17:55:48 +0100 Subject: [PATCH 1/3] Fix for custom resolve support for DjangoFilterConnectionField (issue #30) --- graphene_django/filter/fields.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/graphene_django/filter/fields.py b/graphene_django/filter/fields.py index defcfc166..0d08ab881 100644 --- a/graphene_django/filter/fields.py +++ b/graphene_django/filter/fields.py @@ -24,9 +24,15 @@ def __init__(self, type, fields=None, extra_filter_meta=None, def connection_resolver(resolver, connection, default_manager, filterset_class, filtering_args, root, args, context, info): filter_kwargs = {k: v for k, v in args.items() if k in filtering_args} - qs = default_manager.get_queryset() - qs = filterset_class(data=filter_kwargs, queryset=qs).qs - return DjangoConnectionField.connection_resolver(resolver, connection, qs, root, args, context, info) + + def new_resolver(root, args, context, info): + qs = resolver(root, args, context, info) + if qs is None: + qs = default_manager.get_queryset() + qs = filterset_class(data=filter_kwargs, queryset=qs).qs + return qs + + return DjangoConnectionField.connection_resolver(new_resolver, connection, None, root, args, context, info) def get_resolver(self, parent_resolver): return partial(self.connection_resolver, parent_resolver, self.type, self.get_manager(), From 121f943c3f4b116ce34411a0015005ce0055e773 Mon Sep 17 00:00:00 2001 From: Christian Reiter Date: Mon, 26 Dec 2016 18:19:18 +0100 Subject: [PATCH 2/3] Remove qs --- graphene_django/filter/fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphene_django/filter/fields.py b/graphene_django/filter/fields.py index 0d08ab881..b1f304aab 100644 --- a/graphene_django/filter/fields.py +++ b/graphene_django/filter/fields.py @@ -29,7 +29,7 @@ def new_resolver(root, args, context, info): qs = resolver(root, args, context, info) if qs is None: qs = default_manager.get_queryset() - qs = filterset_class(data=filter_kwargs, queryset=qs).qs + qs = filterset_class(data=filter_kwargs, queryset=qs) return qs return DjangoConnectionField.connection_resolver(new_resolver, connection, None, root, args, context, info) From 6a7a097039c45b0f314465f65b11dffc9014b155 Mon Sep 17 00:00:00 2001 From: Christian Reiter Date: Mon, 26 Dec 2016 18:22:59 +0100 Subject: [PATCH 3/3] Revert "Remove qs" This reverts commit 121f943c3f4b116ce34411a0015005ce0055e773. --- graphene_django/filter/fields.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphene_django/filter/fields.py b/graphene_django/filter/fields.py index b1f304aab..0d08ab881 100644 --- a/graphene_django/filter/fields.py +++ b/graphene_django/filter/fields.py @@ -29,7 +29,7 @@ def new_resolver(root, args, context, info): qs = resolver(root, args, context, info) if qs is None: qs = default_manager.get_queryset() - qs = filterset_class(data=filter_kwargs, queryset=qs) + qs = filterset_class(data=filter_kwargs, queryset=qs).qs return qs return DjangoConnectionField.connection_resolver(new_resolver, connection, None, root, args, context, info)