查询集

查询集(QuerySet)

all,filter,exclude,order_by调用这些函数会产生一个查询集
QuerySet类对象可以继续调用上面所有函数

  • 查询集特性

    1. 惰性: 所有的查询只有在真正用到该数据的时候才会真正的进行查询。否则不会进行真正的查询
    2. 缓存: 如果两次使用查询集相同的话,第二次使用的查询集会直接使用第一次查询完成后缓存的结果,不会进行真正的第二次查询
  • 限制查询集
    如果一个查询集的结果很多,而不是每一个对象都是想要的话,可以使用下标切片的方法进行限制查询集的查询。

    对一个查询集进行切片后会产生一个新的查询集

    切片的下标不允许为负数

  • 取出查询集数据的方法

    Python 3.5.1+ (default, Mar 30 2016, 22:46:26) 
    [GCC 5.3.1 20160330] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    (InteractiveConsole)
    >>> from bookimfor.models import Book
    >>> ids = Book.objects.filter(book_id__gte=1)
    >>> id  = ids[0:3]
    >>> type(id)
    <class 'django.db.models.query.QuerySet'>
    >>> id[0]
    <Book: Book object (1)>
    >>> 
    
    

    直接当列表进行使用就行。按照序号进行提取

    注意:

    1. b[0]如果不存在,会报出索引异常(IndexError)
    2. b[0:3].get()如果不存在,会爆出DoesNotExist
    3. 可以用exists函数判断查询集中是否有数据
      id.exists()
      True
      >>> id=ids[0:0]
      >>> id.exists()
      False
      >>> 
      
      
      True表示有数据
      False表示没有数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值