Skip to content

Commit 234d284

Browse files
committed
Get form field from Django model before defaulting to django-filter
1 parent e2e496f commit 234d284

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

graphene_django/filter/utils.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,25 @@ def get_filtering_args_from_filterset(filterset_class, type):
1111
from ..forms.converter import convert_form_field
1212

1313
args = {}
14+
model = filterset_class._meta.model
1415
for name, filter_field in six.iteritems(filterset_class.base_filters):
15-
field_type = convert_form_field(filter_field.field).Argument()
16+
if name in filterset_class.declared_filters:
17+
form_field = filter_field.field
18+
else:
19+
field_name = name.split("__", 1)[0]
20+
model_field = model._meta.get_field(field_name)
21+
22+
if hasattr(model_field, "formfield"):
23+
form_field = model_field.formfield(
24+
required=filter_field.extra.get("required", False)
25+
)
26+
27+
# Fallback to field defined on filter if we can't get it from the
28+
# model field
29+
if not form_field:
30+
form_field = filter_field.field
31+
32+
field_type = convert_form_field(form_field).Argument()
1633
field_type.description = filter_field.label
1734
args[name] = field_type
1835

0 commit comments

Comments
 (0)