drf 中序列化 重写get_queryset 并重写 list方法中添加序列化的返回数据

本文档描述了在使用Django Rest Framework(DRF)进行序列化时遇到的问题,即在切换订单状态(如从待付款到已付款)时,数量没有更新。解决方案在于重写`get_queryset`方法以获取正确的查询集,并在`list`方法中更新序列化返回的数据,确保数量与内容同步。通过这种方法,可以确保返回的订单数据不仅包含状态内容,还正确显示了每个状态的数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在前一段时间我在搞drf中的序列化时候 遇到到问题

需求如下 : 在序列化中返回订单数据内容 如 待付款 已付款 等内容 还要返回它们数量
思路 : 开始时候使用drf自带的视图序列化 然后数量和内容 也重写了get_queryset 但是 点击 未付款 时候内容变化了 但是数量每一个还是上一个状态的数量
解决办法 重写get_queryset 并重写 list方法中添加序列化的返回数据 如下列代码(只有关键代码…)
def get_queryset(self):
	queryset = self.queryset
	queryset = queryset # queryset 你可以自己根据想要的表查询得到 想要的查询集
	all_order_count = self.filter_queryset(queryset).count()  # 所有订单
def list(self, request, *args, **kwargs):
    response = super().list(request, *args, **kwargs)
    result_data = response.data
    result_data.update(
        {
        "all_order_count": all_order_count,
     }
        )
        # 上面的update 相当于除了序列化的追加的返回内容
   return Response(
           {
               "error_code": 0,
               "message": "查询成功",
               "response": result_data
           }
       )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值