Skip to content

Commit 6046a71

Browse files
tcleonardThomas Leonard
and
Thomas Leonard
authored
fix: declaration of required variable in filters v3 (#1137)
* fix: declaration of required variable * Add unit test * Fix formating Co-authored-by: Thomas Leonard <[email protected]>
1 parent ea593b6 commit 6046a71

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

graphene_django/filter/tests/test_fields.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
if DJANGO_FILTER_INSTALLED:
1818
import django_filters
19-
from django_filters import FilterSet, NumberFilter
19+
from django_filters import FilterSet, NumberFilter, OrderingFilter
2020

2121
from graphene_django.filter import (
2222
GlobalIDFilter,
@@ -1275,3 +1275,22 @@ class Query(ObjectType):
12751275
assert result.data == {
12761276
"people": {"edges": [{"node": {"name": "Joe"}}, {"node": {"name": "Bob"}},]}
12771277
}
1278+
1279+
1280+
def test_only_custom_filters():
1281+
class ReporterFilter(FilterSet):
1282+
class Meta:
1283+
model = Reporter
1284+
fields = []
1285+
1286+
some_filter = OrderingFilter(fields=("name",))
1287+
1288+
class ReporterFilterNode(DjangoObjectType):
1289+
class Meta:
1290+
model = Reporter
1291+
interfaces = (Node,)
1292+
fields = "__all__"
1293+
filterset_class = ReporterFilter
1294+
1295+
field = DjangoFilterConnectionField(ReporterFilterNode)
1296+
assert_arguments(field, "some_filter")

graphene_django/filter/utils.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def get_filtering_args_from_filterset(filterset_class, type):
3737
registry = type._meta.registry
3838
for name, filter_field in filterset_class.base_filters.items():
3939
filter_type = filter_field.lookup_expr
40+
required = filter_field.extra.get("required", False)
4041
field_type = None
4142
form_field = None
4243

@@ -47,8 +48,6 @@ def get_filtering_args_from_filterset(filterset_class, type):
4748
or isinstance(filter_field, ArrayFilter)
4849
):
4950
# Get the filter field for filters that are no explicitly declared.
50-
51-
required = filter_field.extra.get("required", False)
5251
if filter_type == "isnull":
5352
field = graphene.Boolean(required=required)
5453
else:

0 commit comments

Comments
 (0)