Django QuerySet速查手册

        Django为我们提供了一套与数据库交互的机制,让我们能够更便捷的对数据库进行增删改查。Django 对数据库的操作依赖于它的 ORM 系统,Django ORM 主要包括Manager、QuerySet、Model三个模块,下面将对QuerySet进行概述总结,方便在需要使用时然而又刚好忘记了的时候能够有地可查。

QuerySet

        QuerySet 从名字就很好理解,表示对数据库进行查询的结果的集合。QuerySet是可迭代的,其包含一个或多个model instances,并且可构造、过滤、切片、遍历等。

一、特性

        1)延迟加载,符合筛选条件的对象被用到时才进行数据库查询;
        2)缓存机制,查询数据库后的数据将缓存到内存中,当再次使用时不会再进行数据库查询,可使用all()方法对有修改的查询集进行更新
        3)可下标遍历及切片,下标无负数,注意与python切片的区别;
        4)对未进行求值的QuerySet进行运算,可能的返回值:QuerySet 、ValueQuerySet、ValueListQuerySet、Model,此时不进行数据库查询,反之。
        5)通过当前表查询获取关联表记录时需使用select_related()或prefech_related()函数,下面有详细解释;
        6)返回值为QuerySet的方法可叠加使用。

二、QuerySet操作

        1)对查询集加步长(step)切片;

Blog.objects.all()[0:20:2]    # 步长为2

        2)序列化(Pickling);
        3)对查询集进行遍历;

blog = Blog.objects.all()
for temple in blog:
	print(temple.headline)

        4)repr(),将对象转化为字符串,同python str()函数
        5)len(), 求QuerySet元素的数量,推荐使用QuerySet.conunt();
        6)list(), 将QuerySet转为list;
        7)bool(), 判断查询集是否为空,推荐使用QuerySet.exists();
:在QuerySet没有缓存的情况下,以上操作会导致数据库查询。

三、QuerySet 的方法

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值