Describe the bug
When specifying custom annotations for filters.Filter classes, only the basic types and raw openapi definitions are allowed:
|
if is_basic_type(annotation): |
|
schema = build_basic_type(annotation) |
|
else: |
|
# allow injecting raw schema via @extend_schema_field decorator |
|
schema = annotation.copy() |
To Reproduce
from django_filters import rest_framework as filters
@extend_schema_field(serializers.CharField())
class CustomFilter(filters.Filter):
field_class = django.forms.CharField
and use following filter in a view:
from django_filters import rest_framework as filters
class SomeFilter(filters.FilterSet):
something = CustomFilter(required=True)
File "/usr/local/lib/python3.11/site-packages/drf_spectacular/contrib/django_filters.py", line 63, in get_schema_operation_parameters
result += self.resolve_filter_field(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/drf_spectacular/contrib/django_filters.py", line 100, in resolve_filter_field
schema = annotation.copy()
^^^^^^^^^^^^^^^
AttributeError: 'CharField' object has no attribute 'copy'
Expected behavior
I should be able to specify serializer fields in filter annotations.
Describe the bug
When specifying custom annotations for
filters.Filterclasses, only the basic types and raw openapi definitions are allowed:drf-spectacular/drf_spectacular/contrib/django_filters.py
Lines 96 to 100 in d57ff26
To Reproduce
and use following filter in a view:
Expected behavior
I should be able to specify serializer fields in filter annotations.