小编DMF*_*rer的帖子

如何为多项选择过滤器生成模式?

在我们的 API 中,我们有一个端点来列出位置。我们允许过滤位置类型,我们允许此过滤器有多个值。例如:

GET /location/?type=hotel&type=airport
Run Code Online (Sandbox Code Playgroud)

对于过滤,我们使用django-filter. 但是,drf-yasg似乎没有正确生成此参数的架构。

视图类可以归结为:

GET /location/?type=hotel&type=airport
Run Code Online (Sandbox Code Playgroud)

过滤器类如下所示:

from rest_framework.generics import ListAPIView
from .models import Location
from .serializers import LocationListSerializer
from .filters import LocationFilterSet
from django_filters.rest_framework import DjangoFilterBackend

class LocationListView(ListAPIView):
    queryset = Location.objects.all()
    serializer_class = LocationListSerializer
    filter_backends = (
        DjangoFilterBackend,
    )
    filter_class = LocationFilterSet
Run Code Online (Sandbox Code Playgroud)

此视图按预期工作 - 以下测试通过:

from django_filters import rest_framework as filters
from .models import Location

class LocationFilterSet(filters.FilterSet):
    type = filters.MultipleChoiceFilter(choices=Location.TYPE_CHOICES)

    class Meta:
        model = Location
        fields = (
            'type',
        )
Run Code Online (Sandbox Code Playgroud)

我希望为这个参数生成的 …

django django-filter swagger django-rest-framework drf-yasg

5
推荐指数
0
解决办法
1544
查看次数