drf按自定义字段排序返回数据

drf按自定义字段排序返回数据

在serializer.py中

首先自定义字段

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = ['id', 'title', 'price', 'publish', 'priority']

    # 新增字段(按该字段排序)
    priority = serializers.SerializerMethodField()

    def get_priority(self, obj):
        return 6 - int(obj.id)

在views.py中

class BookAPIView(APIView):
    def get(self, request):
        book_list = Book.objects.all()
        # 获取添加新字段后的序列化结果
        ser = BookSerializer(instance=book_list, many=True)
        # 把结果按照priority字段排序,reverse默认是False,是升序,True是降序
        order_by_data = sorted(ser.data, key=lambda x:x['priority'], reverse=False)
        return Response(order_by_data)

image

就实现按照自定义字段进行排序辣

当然,sorted方法还有其他参数,自行百度

排序可以删除该字段

class BookAPIView(APIView):
    def get(self, request):
        book_list = Book.objects.all()
        ser = BookSerializer(instance=book_list, many=True)
        order_by_data = sorted(ser.data, key=lambda x:x['priority'])
        for i in order_by_data:
            i.pop('priority')
        return Response(order_by_data)

image

posted @   zong涵  阅读(433)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示