0

如何处理 drf_yasg 中的排序?

我有一个观点:

class ContentView(ModelViewSet):
    ....
    ordering_fields = ['price',]

但是当我大摇大摆地打开时,我看不到这种可能性。

4

1 回答 1

0

我找到了解决方案,也许有人也需要这个。

我使用django_filters包,在这种情况下,我们应该filter_class在视图上使用,我们可以根据需要定义排序。

例子:

from django_filters import rest_framework as filters, OrderingFilter

from contents.models import Content


class ContentFilter(filters.FilterSet):

    order = OrderingFilter(
        # tuple-mapping retains order
        fields=(
            ('price', 'price'),
        ),

        field_labels={
            'price': 'Content price',
        }
    )

    class Meta:
        model = Content
        fields = ['price']


# my view in views.py

class ContentView(ModelViewSet):
        filter_class = ContentFilter
        .....

现在你可以使用 ordering?order=price或者?order=-price你可以在 swagger docs 上看到它 在此处输入图像描述

有关 django_filters 中的 OrderingFilter 的更多信息在这里

于 2020-04-15T17:57:52.627 回答