Django 视图集操作的不同排序字段

Django 视图集操作的不同排序字段,django,django-rest-framework,Django,Django Rest Framework,我有一个viewset,比如TestingViewSet,它有一个默认的排序字段id class TestingViewSet(viewsets.ReadOnlyViewSet): filter_backends = ( django_filters.rest_framework.DjangoFilterBackend, filters.OrderingFilter, ) ordering = ('id',) 但是还有一些自定义的操作视图使用super(Test

我有一个viewset,比如TestingViewSet,它有一个默认的排序字段id

class TestingViewSet(viewsets.ReadOnlyViewSet):
  filter_backends = (
    django_filters.rest_framework.DjangoFilterBackend,
    filters.OrderingFilter,
  )
   
ordering = ('id',)
但是还有一些自定义的操作视图使用super(TestingViewSet).list,我想有条件地更改它们的排序字段

 def distinct_list(self, request):
    return super(TestingViewSet, self).list(request)

有没有办法只更改函数distinct_list的排序字段?

您可以将值分配给self.ordering

class TestingViewSet(viewsets.ReadOnlyViewSet):
    filter_backends = (
        django_filters.rest_framework.DjangoFilterBackend,
        filters.OrderingFilter,
    )

    ordering = ('id',)

    @action(...)
    def distinct_list(self, request):
        self.ordering = ("some_other_field",)
        # or
        self.ordering = ()  # to remove the ordering
        return super().list(request, *args, **kwargs)
class TestingViewSet(viewset.ReadOnlyViewSet):
过滤器\u后端=(
django_filters.rest_framework.django过滤器包,
filters.OrderingFilter,
)
排序=('id',)
@行动(……)
def distinct_列表(自身、请求):
self.ordering=(“some\u other\u字段”,)
#或
self.ordering=()#删除排序
return super().list(请求、*args、**kwargs)