首页 > 其他分享 >django分页后过滤数据,要进行补全数据的方法

django分页后过滤数据,要进行补全数据的方法

时间:2024-02-21 12:34:06浏览次数:25  
标签:paginator return 补全 deal res data django 数据 page

项目开发中遇到一个问题: 当分页后还要进行数据处理,可能导致原本分页返回的数据不足,那么需要从另外一页进行数据补全(也要数据进行过滤)。

自己写了一个小的组件:

def data_paging(queryset, page, limit, deal_func=None, *args, **kwargs):
    # 创建分页器对象
    paginator = Paginator(queryset, limit)
    try:
        # 尝试获取当前页码的数据
        res = paginator.page(page)
    except EmptyPage:
        # 如果当前页码超出范围,返回最后一页数据
        res = paginator.page(paginator.num_pages)
    if deal_func:
        res__ = [x for x in res]
        return_data = deal_func(res__, *args, **kwargs)
        # 检查当前页的数据量是否满足每页的数量要求
        while len(return_data) < limit and res.has_next():
            # 尝试获取下一页的数据来补齐当前页
            count = len(return_data)
            next_page = paginator.page(res.next_page_number())
            res.object_list.extend(next_page.object_list[:limit - len(return_data)])
            return_data_ = deal_func([x for x in res[count+1:]],*args, **kwargs)
            return_data.extend(return_data_)
        return return_data
    else:
        res = [x for x in res]
        return res

  上述中:

queryset: 整体查询出来的数据
page:第几页
limit:返回多少条
deal_func:过滤的函数(可以不传)
*args,**kwargs: 过滤函数传参

标签:paginator,return,补全,deal,res,data,django,数据,page
From: https://www.cnblogs.com/shaoyishi/p/18024933

相关文章

  • 亲自尝试压缩数据
    压缩数据,我们常用的方式由zip等进行压缩。我们进行压缩是因为,有些文件不方便存储。1.先了解保存文件中的数据形式:文件以字节为单位保存。文件是字节数据的集合体。无论在任何情况下,文件中的字节数据都是连续储存的。2.认识RLE算法的机制:RLE就是把文件内容用“数据*重复次数”的......
  • 2024年2月中国数据库排行榜:PolarDB夺魁首登顶,TiDB攀升回探花
    银装素裹覆大地,春意初醒待来临。2024年2月墨天轮中国数据库流行度榜单出炉,表现最亮眼的无疑是PolarDB,其自23年7月以来一路高歌猛进,此次更是一举夺魁,彰显了云原生数据库的蓬勃发展态势,OceanBase、TiDB紧接拿下榜眼探花。榜单前十中,开源与商业平分秋色、各家数据库乘云直上,你追我赶......
  • Python数据结构与算法05——插入排序 shell排序
    插入排序 definsrt_sort(aimlist):n=len(aimlist)forcurinrange(1,n):i=curwhilei>0:ifaimlist[i]<aimlist[i-1]:aimlist[i],aimlist[i-1]=aimlist[i-1],aimlist[i]i-=1e......
  • 龙年-数据库时间类型字段精度问题 datetime类型的精度
    数据库时间类型字段精度问题理论DatetimeTimestamp保存毫秒防止精度丢失数据库字段为DATETIME(3)时可以保存毫秒。工程经验当数据库为MariaDb10.x.x,则需要jdbc驱动需更换为mariadbconnnector,或者Mariadb相应Mysql数据库版本高于5.6.4则无需更改。DATETIME(3)......
  • SQL查询数据,要求日期不间断,没有数据的日期显示0
    <selectid="getTaskPublish"resultType="java.util.Map">SELECTcount(u.id)AScount,s.dateFROM(SELECTdate_add(#{date},INTERVAL@i:=@i+1DAY)ASdateF......
  • 数据可视化为什么能帮助我们建设智慧社区?
    在迅猛发展的科技时代,数据可视化作为一种强大的工具,为智慧社区的建设提供了无限可能。它不仅改变了我们对信息的获取方式,更为社区管理、居民生活等方面注入了新的活力。下面我就以可视化从业者的角度,简单聊聊这个话题。数据可视化首先为社区管理提供了直观的决策支......
  • 实例详解在Go中构建流数据pipeline
    本文分享自华为云社区《Go并发范式流水线和优雅退出Pipeline与Cancellation》,作者:张俭。介绍Go的并发原语可以轻松构建流数据管道,从而高效利用I/O和多个CPU。本文展示了此类pipelines的示例,强调了操作失败时出现的细微之处,并介绍了干净地处理失败的技术。什么是pipeli......
  • R语言k-Shape时间序列聚类方法对股票价格时间序列聚类|附代码数据
    原文链接:http://tecdat.cn/?p=3726最近我们被客户要求撰写关于时间序列聚类的研究报告,包括一些图形和统计输出。本文我们将使用k-Shape时间序列聚类方法检查与我们有业务关系的公司的股票收益率的时间序列企业对企业交易和股票价格在本研究中,我们将研究具有交易关系的公司的......
  • Python数据结构与算法04——栈与队列
    栈的实现:classStack(object):def__init__(self):self.__list=[]defpush(self,item):self.__list.append(item)defpop(self):returnself.__list.pop()defpeek(self):ifself.__list:returnself._......
  • Python数据结构与算法05——查找与排序
    冒泡排序:defbible_sort(aimlist):n=len(aimlist)j=len(aimlist)whilej>0:foriinrange(n-1):ifaimlist[i]>aimlist[i+1]:aimlist[i],aimlist[i+1]=aimlist[i+1],aimlist[i]n-=1j-=1r......