django 遞歸查詢?cè)u(píng)論的示例詳解
表數(shù)據(jù)

樹(shù)狀結(jié)構(gòu)
@action(methods=('GET', ), detail=False)
def get_info_pinglun(self, request, *args, **kwargs) -> Response:
'''
根據(jù)評(píng)論id查所有回復(fù)
@params wenxian_pinglun_id --> 評(píng)論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):
'''遞歸查該評(píng)論底下的所有回復(fù)'''
results = []
queryset = WenxianPinglun.objects.filter(other_pinglun_id=wenxian_pinglun_id) # 獲取該評(píng)論下所有回復(fù)
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:
'''
根據(jù)評(píng)論id查所有回復(fù)
@params wenxian_pinglun_id --> 評(píng)論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):
'''遞歸查該評(píng)論底下的所有回復(fù)'''
results = []
queryset = WenxianPinglun.objects.filter(other_pinglun_id=wenxian_pinglun_id) # 獲取該評(píng)論下所有回復(fù)
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
到此這篇關(guān)于django 遞歸查詢?cè)u(píng)論的示例詳解的文章就介紹到這了,更多相關(guān)django 評(píng)論內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring AI集成DeepSeek三步搞定Java智能應(yīng)用的詳細(xì)過(guò)程
本文介紹了如何使用SpringAI集成DeepSeek,一個(gè)國(guó)內(nèi)頂尖的多模態(tài)大模型,SpringAI提供了一套統(tǒng)一的接口,簡(jiǎn)化了與不同AI模型的集成,通過(guò)配置文件和簡(jiǎn)單的接口調(diào)用,開(kāi)發(fā)者可以方便地使用DeepSeek進(jìn)行數(shù)學(xué)推理、代碼生成等任務(wù),感興趣的朋友一起看看吧2025-03-03
jvm原理以及jvm調(diào)優(yōu)全過(guò)程
文章解析了JVM原理及調(diào)優(yōu)方法,涵蓋堆內(nèi)存配置(-Xms/-Xmx等)、GC算法選擇(G1、ZGC等)和線程調(diào)優(yōu),強(qiáng)調(diào)通過(guò)分析堆轉(zhuǎn)儲(chǔ)、調(diào)整參數(shù)及優(yōu)化回收策略提升性能,解決內(nèi)存溢出和高GC停頓問(wèn)題2025-09-09
詳解如何使用SpringBoot實(shí)現(xiàn)下載JSON文件
在?Spring?Boot?中實(shí)現(xiàn)文件下載功能,可以通過(guò)將?JSON?字符串作為文件內(nèi)容返回給客戶端從而實(shí)現(xiàn)JSON文件下載效果,下面我們就來(lái)看看具體操作吧2025-02-02
Java實(shí)現(xiàn)文件上傳和url格式校驗(yàn)工具
這篇文章主要介紹了如何使用Java實(shí)現(xiàn)文件上傳和url格式校驗(yàn)工具,主要用于文件類型校驗(yàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2026-04-04
詳細(xì)解讀Druid數(shù)據(jù)庫(kù)連接池的使用
這篇文章主要介紹了Druid數(shù)據(jù)庫(kù)連接池的使用,數(shù)據(jù)庫(kù)連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫(kù)連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫(kù)連接,而不是重新建立一個(gè),需要的朋友可以參考下2023-03-03
Spring Boot3.0新特性全面解析與應(yīng)用實(shí)戰(zhàn)
Spring Boot 3.0作為Spring生態(tài)系統(tǒng)的一個(gè)重要里程碑,帶來(lái)了眾多令人興奮的新特性和改進(jìn),本文將深入解析Spring Boot 3.0的核心變化,并通過(guò)實(shí)戰(zhàn)示例展示如何在項(xiàng)目中應(yīng)用這些新特性,需要的朋友可以參考下2025-07-07

