点击上方梓栋Code,选择设为星标
优质文章,及时送达!一、QuerySet概念
从数据库中查询出来的结果一般是一个集合,这个集合叫做QuerySet。
QuerySet[Goods:Goodsobject(8),Goods:Goodsobject(9),Goods:Goodsobject(10)]
对于上面QuerySet结构的分析:
是存放在数据库中的一个对象
Goods是类名
Goodsobject(8)就是存放在数据库的数据的(键值对的方式(字段名=值)),其中8就是id
sub_obj=models.Student.objects.filter(id=2)print(sub_obj)#QuerySet[Student:name:FF,age20]print(type(sub_obj))#classdjango.db.models.query.QuerySetsub_obj2=models.Student.objects.filter(id=2).first()print(sub_obj2)#name:FF,age20print(type(sub_obj2))#classapp1.models.Student二、两大特性
1.惰性执行
创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代、序列化、与if合用
q=Entry.objects.filter(headline__startswith="Python")q=q.filter(pub_date__lte=datetime.date.today())q=q.exclude(body_text__icontains="food")print(q)
虽然它看上去有三次数据库访问,但事实上只有在最后一行(print(q))时才访问一次数据库。一般来说,只有在“请求”查询集的结果时才会到数据库中去获取它们。当你确实需要结果时,查询集通过访问数据库来求值。关于求值发生的准确时间,参见何时计算查询集。
2.缓存
使用同一个查询集,第一次使用时会发生数据库的查询,然后Django会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少了数据库的查询次数。
三、QuerySet的操作1.QuerySet创建对象的方法:
方法1:类名.objects.create()Author.objects.create(name="梓栋Code",email="nyyvipmail
.