当前位置: 首页 > article >正文

django --递归查询评论

表数据

在这里插入图片描述

树状结构

@action(methods=('GET', ), detail=False)
def get_info_pinglun(self, request, *args, **kwargs) -> Response:
    '''
    根据评论id查所有回复
    @params  wenxian_pinglun_id   -->  评论id;
    '''
    wenxian_pinglun_id = self.request.GET.get('wenxian_pinglun_id')
    results = self._recursion_get_reply(wenxian_pinglun_id)

    return Response({
        'code': 0,
        'msg': 'success',
        'results': results
    })

def _recursion_get_reply(self, wenxian_pinglun_id: int):
    '''递归查该评论底下的所有回复'''
    results = []
    queryset = WenxianPinglun.objects.filter(other_pinglun_id=wenxian_pinglun_id) # 获取该评论下所有回复

    for instance in queryset:
        user = User.objects.get(user_id=instance.user_id)
        other = User.objects.get(user_id=instance.other_id)
        results.append({
            'wenxian_pinglun_id': instance.wenxian_pinglun_id,
            'user__img': user.img,
            'user__nicheng': user.nicheng,
            'other__nicheng': other.nicheng,
            'text': instance.text,
            'children': self._recursion_get_reply(instance.wenxian_pinglun_id)
        })
    return results

在这里插入图片描述

扁平化处理

@action(methods=('GET', ), detail=False)
def get_info_pinglun(self, request, *args, **kwargs) -> Response:
    '''
    根据评论id查所有回复
    @params  wenxian_pinglun_id   -->  评论id;
    '''
    wenxian_pinglun_id = self.request.GET.get('wenxian_pinglun_id')
    results = self._recursion_get_reply(wenxian_pinglun_id)

    return Response({
        'code': 0,
        'msg': 'success',
        'results': results
    })

def _recursion_get_reply(self, wenxian_pinglun_id: int):
    '''递归查该评论底下的所有回复'''
    results = []
    queryset = WenxianPinglun.objects.filter(other_pinglun_id=wenxian_pinglun_id) # 获取该评论下所有回复

    for instance in queryset:
        user = User.objects.get(user_id=instance.user_id)
        other = User.objects.get(user_id=instance.other_id)
        results.append({
            'wenxian_pinglun_id': instance.wenxian_pinglun_id,
            'user__img': user.img,
            'user__nicheng': user.nicheng,
            'other__nicheng': other.nicheng,
            'text': instance.text
        })

    for instance in queryset:
        results.extend(self._recursion_get_reply(instance.wenxian_pinglun_id))
    return results

在这里插入图片描述


http://www.kler.cn/a/458219.html

相关文章:

  • 数据的高级处理——pandas模块进阶——数据的统计运算
  • 【谷歌开发者月刊】十二月精彩资讯回顾,探索科技新可能
  • k8s-1.28.2 部署prometheus
  • vulhub-wordpress靶场
  • 头歌实训1-1:面向过程编程-基础部分
  • vue 嵌套el-dialo,当内层的弹窗弹出时,整个页面被遮罩
  • 如何将项目打包成 Docker 镜像并推送到 Docker Hub
  • 敏捷开发中的自动化脚手架在 HarmonyOS 的应用
  • shardingsphere分库分表项目实践4-sql解析sql改写
  • 【Unity3D】ECS入门学习(八)块组件 ArchetypeChunk
  • 【运维】部署MKDocs
  • 【从零开始入门unity游戏开发之——C#篇37】进程、线程和C# 中实现多线程有多种方案
  • Linux arm 编译安装glibc-2.29
  • C语言学习笔记(3)
  • 【hackmyvm】soul靶机wp
  • vue在action中调用action的函数
  • 如何限制软件访问文件范围,阻止越权访问
  • UE5改变物体坐标轴位置
  • Vscode连接InternStudio进行debug
  • 从编译到电路:Verilog的“黑魔法“转换过程
  • 租赁小程序的优势与应用场景分析
  • 【JDBC】转账案例
  • KNN分类算法 HNUST【数据分析技术】(2025)
  • 探索PyTorch:从入门到实践的demo全解析
  • CES Asia 2025优惠期倒计时5天,科技盛宴即将开启
  • 如何在IDEA一个窗口中导入多个项目