django处理评论和回复的复杂分页

无敌的宇宙
无敌的宇宙
擅长邻域:Java,HTML,JavaScript,MySQL,支付,退款,图片上传

分类: python 标签: django处理评论和回复的复杂分页

2026-01-30 13:05:13 68浏览

django处理评论和回复的复杂分页,如何处理返回类型list里面带有回复list

image.png

image.png

image.png


models

class Comment(models.Model):
    id = models.AutoField(primary_key=True)
    col_id= models.IntegerField(null=True,blank=True)
    hf_id= models.IntegerField(null=True,blank=True)
    hitlikenum= models.IntegerField(null=True,blank=True)
    cts=models.CharField( max_length=255)
    ctype=models.CharField( max_length=255)
    ccont=models.TextField()
    user=models.ForeignKey(to='Users',to_field='id',on_delete=models.SET_NULL,related_name='user_comment',null=True,blank=True)
    hfuser=models.ForeignKey(to='Users',to_field='id',on_delete=models.SET_NULL,related_name='hfuser_comment',null=True,blank=True)

views

import json

from django.db.models import Q
from django.http import JsonResponse
from jf3qApp.models import Comment
from jf3qApp.models import Forum
from jf3qApp.models import Users
from jf3qApp.utils import pageUtil
from jf3qApp.utils import dateUtil
from jf3qApp.utils import uploadUtil
from rest_framework import  serializers

from jf3qApp.utils import htmlParseUtil



class UsersSerializer(serializers.ModelSerializer):
    class Meta:
        model=Users
        fields='__all__'

class CommentSerializer(serializers.ModelSerializer):
    rli=serializers.SerializerMethodField()
    user=UsersSerializer(serializers.ModelSerializer)
    hfuser=UsersSerializer(serializers.ModelSerializer)
    class Meta:
        model=Comment
        fields='__all__'

    def get_rli(self,obj):
        return getattr(obj,'rli',[])


def page(request):
    query_data={}
    pageNo=request.POST.get('pageNo')
    pageSize=request.POST.get('pageSize')
    col_id=request.POST.get('col_id')
    ctype=request.POST.get('ctype')
    hf_id=request.POST.get('hf_id')
    ccont=request.POST.get('ccont')
    user_id=request.POST.get('user_id')
    nickname=request.POST.get('nickname')
    if ccont:
        query_data['ccont__icontains']=ccont
    if nickname:
        query_data['user__nickname__icontains']=nickname
    if col_id:
        query_data['col_id']=col_id
    if ctype:
        query_data['ctype']=ctype
    if hf_id:
        query_data['hf_id']=hf_id
    if user_id:
        query_data['user_id']=user_id
    all=Comment.objects.select_related('user','hfuser').filter(**query_data).all().order_by('-id')
    page_info=pageUtil.getpage(all,page_no=pageNo,page_size=pageSize)
    result_list=[]
    for comment in page_info['list']:
        rli=Comment.objects.select_related('user','hfuser').filter(hf_id=comment.id).all().order_by('-id')
        comment_data=CommentSerializer(comment,many=False).data;
        rli_data=CommentSerializer(rli,many=True).data;
        comment_data.rli=rli_data;
        result_list.append(comment_data)
    serializer=CommentSerializer(result_list,many=True)
    page_info['list']=serializer.data
    data={'status':1,'msg':'操作成功','obj':page_info}
    return JsonResponse(data)

返回类型list里面带有回复list

好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695