From 226a1d0e3a68c922aae5236f0fd7d3584ecc0e99 Mon Sep 17 00:00:00 2001 From: Sergio Date: Mon, 15 Oct 2018 14:34:56 -0500 Subject: [PATCH] #534 add filterset validation to DjangoFilterConnectionField --- graphene_django/filter/fields.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/graphene_django/filter/fields.py b/graphene_django/filter/fields.py index cb42543..ff07a89 100644 --- a/graphene_django/filter/fields.py +++ b/graphene_django/filter/fields.py @@ -1,6 +1,7 @@ from collections import OrderedDict from functools import partial +from graphql.error import GraphQLError from graphene.types.argument import to_arguments from ..fields import DjangoConnectionField from .utils import get_filtering_args_from_filterset, get_filterset_class @@ -89,11 +90,22 @@ class DjangoFilterConnectionField(DjangoConnectionField): **args ): filter_kwargs = {k: v for k, v in args.items() if k in filtering_args} - qs = filterset_class( + + filterset = filterset_class( data=filter_kwargs, queryset=default_manager.get_queryset(), request=info.context, - ).qs + ) + + if not filterset.is_valid(): + exc = { + key: [e.message for e in error_list] + for key, error_list in filterset.errors.as_data().items() + } + + raise GraphQLError(exc) + + qs = filterset.qs return super(DjangoFilterConnectionField, cls).connection_resolver( resolver,