如何使用 drf_yasg 显示排序
How can I display ordering using drf_yasg
如何处理drf_yasg中的排序?
我有一个观点:
class ContentView(ModelViewSet):
....
ordering_fields = ['price',]
但是我打开swagger的时候看不到这个可能性
我找到了解决方案,也许有人也需要这个。
我使用 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 文档上看到它
django_filtershere
中有关 OrderingFilter 的更多信息
如何处理drf_yasg中的排序?
我有一个观点:
class ContentView(ModelViewSet):
....
ordering_fields = ['price',]
但是我打开swagger的时候看不到这个可能性
我找到了解决方案,也许有人也需要这个。
我使用 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 文档上看到它
django_filtershere
中有关 OrderingFilter 的更多信息