Как я могу отобразить порядок с помощью drf_yasg - PullRequest
0 голосов
/ 07 февраля 2020

Как бороться с заказом в drf_yasg?

У меня есть вид:

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

Но когда я открываю свагер, я не вижу этой возможности.

1 Ответ

0 голосов
/ 15 апреля 2020

Я нашел решение, возможно, кому-то это тоже нужно.

Я использую пакет 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
        .....

Теперь вы можете использовать заказ ?order=price или ?order=-price, и вы можете увидеть его на документах Swagger enter image description here

Подробнее о OrderingFilter можно узнать в django_filters здесь

...