Skip to content

accept connections for DjangoFilterConnectionField #99

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions graphene_django/filter/fields.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from functools import partial

from ..fields import DjangoConnectionField
from graphene.relay import is_node
from .utils import get_filtering_args_from_filterset, get_filterset_class


Expand All @@ -9,9 +10,18 @@ class DjangoFilterConnectionField(DjangoConnectionField):
def __init__(self, type, fields=None, extra_filter_meta=None,
filterset_class=None, *args, **kwargs):

self.fields = fields or type._meta.filter_fields
meta = dict(model=type._meta.model,
fields=self.fields)
if is_node(type):
_fields = type._meta.filter_fields
_model = type._meta.model
else:
# ConnectionFields can also be passed Connections,
# in which case, we need to use the Node of the connection
# to get our relevant args.
_fields = type._meta.node._meta.filter_fields
_model = type._meta.node._meta.model

self.fields = fields or _fields
meta = dict(model=_model, fields=self.fields)
if extra_filter_meta:
meta.update(extra_filter_meta)
self.filterset_class = get_filterset_class(filterset_class, **meta)
Expand Down