mirror of
https://github.com/graphql-python/graphene-django.git
synced 2025-07-14 02:02:20 +03:00
#534 add filterset validation to DjangoFilterConnectionField
This commit is contained in:
parent
f76f38ef30
commit
226a1d0e3a
|
@ -1,6 +1,7 @@
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
|
||||||
|
from graphql.error import GraphQLError
|
||||||
from graphene.types.argument import to_arguments
|
from graphene.types.argument import to_arguments
|
||||||
from ..fields import DjangoConnectionField
|
from ..fields import DjangoConnectionField
|
||||||
from .utils import get_filtering_args_from_filterset, get_filterset_class
|
from .utils import get_filtering_args_from_filterset, get_filterset_class
|
||||||
|
@ -89,11 +90,22 @@ class DjangoFilterConnectionField(DjangoConnectionField):
|
||||||
**args
|
**args
|
||||||
):
|
):
|
||||||
filter_kwargs = {k: v for k, v in args.items() if k in filtering_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,
|
data=filter_kwargs,
|
||||||
queryset=default_manager.get_queryset(),
|
queryset=default_manager.get_queryset(),
|
||||||
request=info.context,
|
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(
|
return super(DjangoFilterConnectionField, cls).connection_resolver(
|
||||||
resolver,
|
resolver,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user