-
Notifications
You must be signed in to change notification settings - Fork 303
Open
Description
Describe the bug
The latest release of drf-spectacular (0.29) is incompatible with latest version of django-filter (25.2).
To Reproduce
Have a view with django-filter in use, open swagger page. More specifically, it seems TypedMultipleChoiceField is giving the issue. See the following error log:
File "/usr/local/lib/python3.13/site-packages/drf_spectacular/views.py", line 84, in get
return self._get_schema_response(request)
~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/drf_spectacular/views.py", line 92, in _get_schema_response
data=generator.get_schema(request=request, public=self.serve_public),
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/drf_spectacular/generators.py", line 287, in get_schema
paths=self.parse(request, public),
~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.13/site-packages/drf_spectacular/generators.py", line 258, in parse
operation = view.schema.get_operation(
path, path_regex, path_prefix, method, self.registry
)
File "/usr/local/lib/python3.13/site-packages/drf_spectacular/openapi.py", line 93, in get_operation
parameters = self._get_parameters()
File "/usr/local/lib/python3.13/site-packages/drf_spectacular/openapi.py", line 265, in _get_parameters
**dict_helper(self._get_filter_parameters()),
~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/drf_spectacular/openapi.py", line 556, in _get_filter_parameters
parameters += filter_extension.get_schema_operation_parameters(self)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/usr/local/lib/python3.13/site-packages/drf_spectacular/contrib/django_filters.py", line 65, in get_schema_operation_parameters
result += self.resolve_filter_field(
~~~~~~~~~~~~~~~~~~~~~~~~~^
auto_schema, model, filterset_class, field_name, filter_field
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/local/lib/python3.13/site-packages/drf_spectacular/contrib/django_filters.py", line 90, in resolve_filter_field
filter_choices = self._get_explicit_filter_choices(filter_field)
File "/usr/local/lib/python3.13/site-packages/drf_spectacular/contrib/django_filters.py", line 233, in _get_explicit_filter_choices
if filter_field.field.null_label:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'TypedMultipleChoiceField' object has no attribute 'null_label'
Rollback to 0.28 solves the issue.
Expected behavior
Expect drf-spectacular to work out of the box with all filter types from django-filter.
ddabble
Metadata
Metadata
Assignees
Labels
No labels