diff --git a/graphene_django/filter/tests/test_fields.py b/graphene_django/filter/tests/test_fields.py index 933961b..ab3d677 100644 --- a/graphene_django/filter/tests/test_fields.py +++ b/graphene_django/filter/tests/test_fields.py @@ -2,7 +2,7 @@ from datetime import datetime import pytest -from graphene import Field, ObjectType, Schema +from graphene import Field, ObjectType, Schema, Argument, Float from graphene.relay import Node from graphene_django import DjangoObjectType from graphene_django.forms import (GlobalIDFormField, @@ -46,10 +46,7 @@ class PetNode(DjangoObjectType): def get_args(field): - if isinstance(field.args, list): - return {arg.name: arg for arg in field.args} - else: - return field.args + return field.args def assert_arguments(field, *arguments): @@ -252,6 +249,22 @@ def test_global_id_field_explicit(): assert id_filter.field_class == GlobalIDFormField +def test_filterset_descriptions(): + class ArticleIdFilter(django_filters.FilterSet): + + class Meta: + model = Article + fields = ['id'] + + max_time = django_filters.NumberFilter(method='filter_max_time', label="The maximum time") + + field = DjangoFilterConnectionField(ArticleNode, filterset_class=ArticleIdFilter) + max_time = field.args['max_time'] + assert isinstance(max_time, Argument) + assert max_time.type == Float + assert max_time.description == 'The maximum time' + + def test_global_id_field_relation(): field = DjangoFilterConnectionField(ArticleNode, fields=['reporter']) filterset_class = field.filterset_class diff --git a/graphene_django/filter/utils.py b/graphene_django/filter/utils.py index 30562d2..3720dd8 100644 --- a/graphene_django/filter/utils.py +++ b/graphene_django/filter/utils.py @@ -14,12 +14,14 @@ def get_filtering_args_from_filterset(filterset_class, type): args = {} for name, filter_field in six.iteritems(filterset_class.base_filters): - field_type = convert_form_field(filter_field.field) + field_type = convert_form_field(filter_field.field).Argument() + field_type.description = filter_field.label args[name] = field_type # Also add the 'order_by' field if filterset_class._meta.order_by: args[filterset_class.order_by_field] = String() + return args