Django——惰性机制
Django惰性机制
所谓惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),
它并不会马上执行sql,而是当调用QuerySet的时候才执行。
了解什么是QuerySet?
QuerySet是查询集,就是传到服务器上的url里面的查询内容。
Django会对查询返回的结果集QuerySet进行缓存,这是为了提高查询效率。
也就是说,在你创建一个QuerySet对象的时候,Django并不会立即向数据库发出查询命令,只有在你需要用到这个QuerySet的时候才会这样做。
QuerySet的两个特点:
1迭代
1 def list(request): 2 obj_li = models.Book.objects.all() 3 for item in obj_li[1:3]: # 每一obj就是一个行对象,此时会执行sql 4 print (item.name)
2切片
1 # objs=models.Book.objects.all() # [obj1,obj2,ob3...] 2 # print(objs[1]) 3 # print(objs[1:4]) 4 # print(objs[::-1])