首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如果我在Django分页之前查询所有数据库,有什么用?

如果我在Django分页之前查询所有数据库,有什么用?
EN

Stack Overflow用户
提问于 2020-06-13 00:16:22
回答 1查看 56关注 0票数 1

按照下面的代码,我正在对数据库执行查询,然后对查询结果进行分页。所以我的问题是,如果我们在分页之前已经访问了所有结果的数据库,那有什么用呢?这是像Django分页工作,还是我假装出了什么问题?我得到了预期的响应,但在分页之前有查询数据库的问题。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class GetAllUserStoryListViewTest(APIView,LimitOffsetPagination):

    permission_classes = (IsAuthenticated,)


    def get_object(self,user_id):
        user = User.objects.filter(id = user_id).first()
        posts = Post.objects.filter(user = user)
        return posts

    def get(self,request,user_id):
        posts = self.get_object(user_id).order_by('-post_time_stamp')

        #setting the limit of this user post pagination
        LimitOffsetPagination.default_limit = settings.PAGE_SIZE
        posts = self.paginate_queryset(posts, request)
        serializer_context = {
            'request': request,
        }
        serializer = PostListSerializer(posts,many=True,context=serializer_context)
        # return Response(serializer.data)
        return self.get_paginated_response(serializer.data)

产出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "count": 7,
    "next": "http://127.0.0.1:8000/api/list_all_story_test/27/?limit=2&offset=5",
    "previous": "http://127.0.0.1:8000/api/list_all_story_test/27/?limit=2&offset=1",
    "results": [
        {
            "id": 15,
            "file": "http://127.0.0.1:8000/media/user_27/post/IMG_20190331_144024.jpg",
            "post_info": "#cool",
            "post_time_stamp": "2020-05-10T10:21:10Z",
            "total_comment": 2,
            "liked_by": [
                "vipin"
            ],
            "user": {
                "id": 27,
                "username": "vipin",
                "email": "vipinks@xyz.edu",
                "status": true,
                "profile": {
                    "id": 24,
                    "full_name": "Vipin",
                    "mobile": 6732,
                    "background_picture": "http://127.0.0.1:8000/media/user_27/profile/pexels-photo-531880_0qSgRNx.jpeg",
                    "profile_picture": "http://127.0.0.1:8000/media/user_27/profile/IMG_20190331_144024.jpg",
                    "BioDescription": "xyz",
                    "date_of_birth": "1996-06-01",
                    "gender": "M",
                    "account_type": "Private",
                    "user": 27
                },
                "last_login": null,
                "is_superuser": false,
                "is_staff": false,
                "is_active": true,
                "date_joined": "2020-04-28T11:09:27.691478Z"
            },
            "comment_usr": [
                "xyz",
                26,
                "Cool Pic"
            ],
            "like_by_you": true
        },
        {
            "id": 13,
            "file": "http://127.0.0.1:8000/media/user_30/post/IMG_20190402_102248.jpg",
            "post_info": "#Awesome",
            "post_time_stamp": "2020-05-10T10:20:22Z",
            "total_comment": 8,
            "user": {
                "id": 30,
                "username": "xyz",
                "email": "xyz@gmail.com",
                "status": false,
                "profile": {
                    "id": 27,
                    "full_name": "XYZ",
                    "mobile": 123,
                    "background_picture": null,
                    "profile_picture": "http://127.0.0.1:8000/media/user_30/profile/demo.jpg",
                    "BioDescription": null,
                    "date_of_birth": null,
                    "gender": "F",
                    "account_type": "Private",
                    "user": 30
                },
                "last_login": null,
                "is_superuser": false,
                "is_staff": false,
                "is_active": true,
                "date_joined": "2020-04-28T11:13:58.030941Z"
            },
            "like_by_you": true
        }
    ]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-13 01:24:05

分页使用Count()方法访问数据库,对结果进行分页。

而且,在每一页中,通过切片访问数据库的效率要比

使用带有all()方法的查询集,并使用Iteration访问数据库,后者加载所有结果。

filter()all()方法不访问数据库。请参阅以检查何时计算QuerySet

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62357201

复制
相关文章
CKEditor使用
https://ckeditor.com/ckeditor-4/download/
码客说
2022/09/19
2.5K0
CKEditor使用
将Sublime添加到鼠标右键
2、找到 HKEY_CLASSES_ROOT/*/shell 目录,在此目录下操作。
新码农
2020/03/05
3K0
将Windows Terminal添加到鼠标右键
导读 非常实用的小技巧。 下载Windows Terminal图标,右键另存为。 [WindowsTerminal图标] 保存至'C:\Users\Administrator\AppData\Local\Terminal\Terminal.ico'。 win+R输入'regedit',打开注册表。 找到'HKEY_CLASSES_ROOT\Directory\Background\shell'目录,在此目录下操作。 新建项'wt',双击右边'默认',更改右键文字显示内容'Windows Terminal H
新码农
2020/08/05
3.6K0
将Windows Terminal添加到鼠标右键
将Emoji表情添加到项目中 顶
选择完需要的表情,点击消息预览就可以看到效果了,有一个微笑表情是QQ表情~~ 可以不用管它。
linapex
2019/03/26
1.8K0
将Emoji表情添加到项目中
                                                    顶
dart - 将 orElse 函数添加到 firstWhere 方法
我正在尝试将 onElse 函数添加到 iterator.firstWhere 方法,但我无法获得正确的语法。 我试过类似的东西
徐建国
2021/08/31
1.6K0
将程序添加到右键菜单快速启动
打开注册表编辑器:按下 Win + R 键,输入 regedit,然后按回车键打开注册表编辑器。
浪漫主义狗
2023/09/04
4610
将程序添加到右键菜单快速启动
将 Fedora Linux 系统添加到企业域中
在企业互联网场景中,一般情况下最广泛使用的基于 Linux 的操作系统是 Red Hat Enterprise Linux(RHEL),它主要用于服务器,但也可以用作工作站。Fedora linux 其实也是工作站系统的一个很好的选择,它提供了许多在企业环境中工作的特性,使管理成为一项简单的任务。
用户1880875
2021/09/06
1.6K0
Windows下将cmd命令添加到右键菜单
将下列文本复制到文件,保存为 *.reg 格式: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\cmd_here] @="在此处打开cmd" "Icon"="cmd.exe" [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\background\shell\cmd_here\command] @="\"C:\
Daotin
2020/12/14
2K0
OpenStack命令将卷添加到虚拟机上
首先加载权限 [root@controller ~]# . admin-openrc
院长技术
2020/06/15
1.5K0
Java将内容追加/添加到现有文件
如果您希望代码创建一个新文件并删除以前的现有文件,则FileWriter可以轻松代替它。要替换现有文件中的所有内容,请使用以下命令:
用户7886150
2021/04/28
3.1K0
如何使用ReconAIzer将OpenAI添加到Burp中
ReconAIzer是一款功能强大的Burp Suite扩展,该工具基于Jython开发,可以为Burp Stuite添加OpenAI能力,并利用OpenAI来优化和增强渗透测试过程中的网络侦查任务。该工具专为漏洞猎人和渗透测试人员设计,支持以自动化的形式执行多种网络安全任务,可以帮助广大安全研究人员以简单快速的形式识别和利用漏洞。
FB客服
2023/08/08
2960
如何使用ReconAIzer将OpenAI添加到Burp中
解决将Editplus添加到鼠标右键的问题
以管理员身份运行EditPlus 一次点击–>工具–>首选项–>常规–>勾选将EditPlus添加到系统右键菜单选项
别团等shy哥发育
2023/02/25
1.4K0
解决将Editplus添加到鼠标右键的问题
技术分享 | 将GreatSQL添加到系统systemd服务
systemd 是Linux系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程,systemd被设计用来改进原来sysvinit中的多个缺点。
老叶茶馆
2021/07/09
1.3K0
只需三步:在CKEditor4富文本编辑器中集成错别字在线检测
JCJC错别字检测已经可以集成在各种编辑器中了,这篇文章主要用来讲解如何与:CKEditor编辑器集成错别字在线检测功能。
田春峰-JCJC错别字检测
2019/11/26
1.4K0
只需三步:在CKEditor4富文本编辑器中集成错别字在线检测
如何将WebRTC播放协议添加到EasyCVR?
自2020年浏览器的发展和兼容性发生了变化,WebRTC的延时性、安全性得到了提升和保护,尤其是疫情爆发后,实时视频的需求比之前增长了30倍,这更刺激了WebRTC产品的持续快速发展。因此我们也在EasyGBS、EasyDSS等平台内实现了WebRTC协议的播放。
TSINGSEE青犀视频
2021/11/23
1.4K0
将普通用户添加到sudo组
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
suveng
2019/09/18
2.2K0
将 Docker 镜像安全扫描,添加到 CI/CD 管道
如今,镜像安全扫描变得越来越流行。这个想法是分析一个Docker镜像并基于CVE数据库寻找漏洞。这样,我们可以在使用镜像之前知道其包含哪些漏洞,因此我们只能在生产中使用“安全”镜像。
我的小碗汤
2023/03/19
2.5K0
将 Docker 镜像安全扫描,添加到 CI/CD 管道
将多个Celery定时任务添加到Systemd
当多个celery定时任务都需要开机自动启动,所以都需要添加到systemd,但在/etc/conf.d/下只有一个配置文件,肯定不可能多个定时任务共用同一个配置文件.
Python碎片公众号
2021/02/26
1.3K0
将多个Celery定时任务添加到Systemd
点击加载更多

相似问题

Arial Unicode MS未在Jtree中对齐

10

等效于Arial Unicode MS的字体

21

在JavaFX中使用Arial Unicode MS粗体

176

如何设置Arial Unicode Ms Font for Crystal Report Chart?

22

Oracle SQL Developer: Arial Unicode MS和其他字体不可用

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文