python - 使用 Django Rest Framework 订购带有排序查询参数的detail_route

标签 python django django-rest-framework

在如下所示的 detail_route 方法中,我如何支持使用 ordering 查询参数对事件进行排序,如下所示:

http://localhost.com/items/123/events?ordering=EventDateTime

class ItemViewSet(viewsets.ModelViewSet):

    queryset = Item.objects.all()
    serializer_class = ItemSerializer
    filter_backends = (
        filters.OrderingFilter
    )
    ordering_fields = ('Label')

    @detail_route()
    def events(self, request, pk=None):
        item = self.get_object()
        events = item.events.all()
        page = self.paginate_queryset(events)
        if page is not None:
            serializers = EventSerializer(page, many=True, context={'request': request})
            return self.get_paginated_response(serializers.data)
        serializers = EventSerializer(events, many=True, context={'request': request})
        return Response(serializers.data)

我尝试了以下方法,但没有任何结果:

@detail_route()
def events(self, request, pk=None):
    item = self.get_object()
    events = filters.OrderingFilter().filter_queryset(request, item.events.all(), self)
    page = self.paginate_queryset(events)
    if page is not None:
        serializers = EventSerializer(page, many=True, context={'request': request})
        return self.get_paginated_response(serializers.data)
    serializers = EventSerializer(events, many=True, context={'request': request})
    return Response(serializers.data)

最佳答案

正如汤男孩建议的那样。您需要将 EventDateTime 添加到 ItemViewSet 中的 ordering_fields 中。

关于python - 使用 Django Rest Framework 订购带有排序查询参数的detail_route,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40507370/

相关文章:

python - 自定义 django-revproxy 权限

django - 使用 SSL、AWS Load Balancer、Nginx 和 Gunicorn 的具有复杂堆栈的 Django Rest Framework 的错误超链接

python - 为什么 bash (WSL) 使用 w3m 作为默认浏览器?

python - @lru_cache 装饰器过多的缓存未命中

python - 我似乎无法在我的笔记本电脑上进行多重处理

django - 将第二个注册屏幕添加到社交注册 allauth

Django 重写保存方法 : to return super(). save() 还是不返回?

python - 使用条件为 "OR"的字典在 Q 查找中包含属性的最佳 pythonic 方法

Django休息框架: how to route a uuid to an associated object?

python - 如何在没有管理员权限的情况下在 Windows 上安装 python