Skip to content

Commit a599e4c

Browse files
authored
Merge pull request #99 from nickhudkins/feature/filter-connection-field-connections
accept connections for DjangoFilterConnectionField
2 parents 8649ffb + 15664bd commit a599e4c

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

graphene_django/filter/fields.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from functools import partial
22

33
from ..fields import DjangoConnectionField
4+
from graphene.relay import is_node
45
from .utils import get_filtering_args_from_filterset, get_filterset_class
56

67

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

12-
self.fields = fields or type._meta.filter_fields
13-
meta = dict(model=type._meta.model,
14-
fields=self.fields)
13+
if is_node(type):
14+
_fields = type._meta.filter_fields
15+
_model = type._meta.model
16+
else:
17+
# ConnectionFields can also be passed Connections,
18+
# in which case, we need to use the Node of the connection
19+
# to get our relevant args.
20+
_fields = type._meta.node._meta.filter_fields
21+
_model = type._meta.node._meta.model
22+
23+
self.fields = fields or _fields
24+
meta = dict(model=_model, fields=self.fields)
1525
if extra_filter_meta:
1626
meta.update(extra_filter_meta)
1727
self.filterset_class = get_filterset_class(filterset_class, **meta)

0 commit comments

Comments
 (0)