Skip to content

Commit 60bcc0b

Browse files
committed
Use filter label as argument description. Fixed #16
1 parent 775221c commit 60bcc0b

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

graphene_django/filter/tests/test_fields.py

+18-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import pytest
44

5-
from graphene import Field, ObjectType, Schema
5+
from graphene import Field, ObjectType, Schema, Argument, Float
66
from graphene.relay import Node
77
from graphene_django import DjangoObjectType
88
from graphene_django.forms import (GlobalIDFormField,
@@ -46,10 +46,7 @@ class Meta:
4646

4747

4848
def get_args(field):
49-
if isinstance(field.args, list):
50-
return {arg.name: arg for arg in field.args}
51-
else:
52-
return field.args
49+
return field.args
5350

5451

5552
def assert_arguments(field, *arguments):
@@ -252,6 +249,22 @@ class Meta:
252249
assert id_filter.field_class == GlobalIDFormField
253250

254251

252+
def test_filterset_descriptions():
253+
class ArticleIdFilter(django_filters.FilterSet):
254+
255+
class Meta:
256+
model = Article
257+
fields = ['id']
258+
259+
max_time = django_filters.NumberFilter(method='filter_max_time', label="The maximum time")
260+
261+
field = DjangoFilterConnectionField(ArticleNode, filterset_class=ArticleIdFilter)
262+
max_time = field.args['max_time']
263+
assert isinstance(max_time, Argument)
264+
assert max_time.type == Float
265+
assert max_time.description == 'The maximum time'
266+
267+
255268
def test_global_id_field_relation():
256269
field = DjangoFilterConnectionField(ArticleNode, fields=['reporter'])
257270
filterset_class = field.filterset_class

graphene_django/filter/utils.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,14 @@ def get_filtering_args_from_filterset(filterset_class, type):
1414

1515
args = {}
1616
for name, filter_field in six.iteritems(filterset_class.base_filters):
17-
field_type = convert_form_field(filter_field.field)
17+
field_type = convert_form_field(filter_field.field).Argument()
18+
field_type.description = filter_field.label
1819
args[name] = field_type
1920

2021
# Also add the 'order_by' field
2122
if filterset_class._meta.order_by:
2223
args[filterset_class.order_by_field] = String()
24+
2325
return args
2426

2527

0 commit comments

Comments
 (0)