django 遞歸查詢評論的示例詳解
更新時間:2025年01月03日 09:47:37 作者:像風一樣的男人@
文章介紹了將表數據轉換為樹狀結構以及如何處理扁平化數據的方法,探討了在數據管理中的應用和實現技術,感興趣的朋友一起看看吧
表數據

樹狀結構
@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
到此這篇關于django 遞歸查詢評論的示例詳解的文章就介紹到這了,更多相關django 評論內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring AI集成DeepSeek三步搞定Java智能應用的詳細過程
本文介紹了如何使用SpringAI集成DeepSeek,一個國內頂尖的多模態(tài)大模型,SpringAI提供了一套統(tǒng)一的接口,簡化了與不同AI模型的集成,通過配置文件和簡單的接口調用,開發(fā)者可以方便地使用DeepSeek進行數學推理、代碼生成等任務,感興趣的朋友一起看看吧2025-03-03
Spring Boot3.0新特性全面解析與應用實戰(zhàn)
Spring Boot 3.0作為Spring生態(tài)系統(tǒng)的一個重要里程碑,帶來了眾多令人興奮的新特性和改進,本文將深入解析Spring Boot 3.0的核心變化,并通過實戰(zhàn)示例展示如何在項目中應用這些新特性,需要的朋友可以參考下2025-07-07

