Django rest framework DRF序列化程序:在StringRelatedField上排序

Django rest framework DRF序列化程序:在StringRelatedField上排序,django-rest-framework,Django Rest Framework,我有一个ModelSerializer,它有一个来自链接模型的字段,如下所示 owner_login = StringRelatedField(source='resource.owner.login_id', read_only=True) 我想在这个字段上添加动态排序,我该怎么做 看法 StringRelatedField只是一个表示。您需要在视图中进行以下操作: class YourListView(generics.ListAPIView): queryset = YourMo

我有一个ModelSerializer,它有一个来自链接模型的字段,如下所示

owner_login = StringRelatedField(source='resource.owner.login_id', read_only=True)
我想在这个字段上添加动态排序,我该怎么做

看法

StringRelatedField只是一个表示。您需要在视图中进行以下操作:

class YourListView(generics.ListAPIView):
    queryset = YourModel.objects.all()
    serializer_class = YourSerializer
    filter_backends = (filters.OrderingFilter,)
    ordering_fields = ('resource__owner__login_id', )
    ordering = ('resource__owner__login_id',)  # add this only if you want to use it as default ordering
如果您没有将其作为默认排序,那么您的请求应该包含如下所示的排序查询参数


http://example.com/api/yourmodel?ordering=resource__owner__login_id

订购应该在视图级别进行,看看如何进行。@GabrielMuj谢谢,我知道了。但文档并没有说明如何对相关字段进行排序。你能给我指一下正确的文档吗?不知怎的,我得到的数据与ordering=resource\uuuuuu owner\uuuuuu login\u id和ordering=-resource\uuuuuuu owner\uuuuuu login\u id是一样的。没有排序数据,正在调试。你能发布你的观点吗?请看,我更新了代码,Gabriel。虽然实际结束时间与字段无关,但它仅在ResourceLog模型中。但这不起作用。您是否也在视图中添加了filter_backends=filters.OrderingFilter?我看不出来。不,让我试着加上。
class YourListView(generics.ListAPIView):
    queryset = YourModel.objects.all()
    serializer_class = YourSerializer
    filter_backends = (filters.OrderingFilter,)
    ordering_fields = ('resource__owner__login_id', )
    ordering = ('resource__owner__login_id',)  # add this only if you want to use it as default ordering