1>数据查询
--->先看下各类语法
查询表记录一定要着重注意该语法的调用者和返回值,这样就可以很清楚的知道返回值之后还能
调用什么其他方法(链式操作), 看下实际例子
#(1) all方法: 返回值一个queryset对象 book_all=Book.objects.all() print(book_all) # [obj1,obj2,.....] for obj in book_all: print(obj.title,obj.price) print(book_all[1].title) # 也可以索引取值 #(2) first,last : 调用者:queryset对象 返回值:model对象 book_1=Book.objects.all().first() book_1=Book.objects.all()[0] # 效果等同于上面 print(book_1) #(3) filter() 返回值:queryset对象,条件筛选,可能有多个值 book_list=Book.objects.filter(price=100) # [obj1,obj2,....] print(book_list) # 满足条件的price=100的所有对象 book_obj=Book.objects.filter(price=100).first() # 链式操作 ret=Book.objects.filter(title="php",price=150) # 多条件筛选 print(ret) #(4) get() 有且只有一个查询结果时才有意义 返回值:model对象 book_obj=Book.objects.get(title="php") # book_obj=Book.objects.get(price=100) print(book_obj.price) #(5) exclude 返回值:queryset对象 ret2=Book.objects.exclude(title="php") print(ret2) #(6) order_by 调用者: queryset对象 返回值: queryset对象 ret3=Book.objects.all().order_by("-id") # 默认升序,负号就是降序 ret4=Book.objects.all().order_by("price","id") # 多条件排序 print(ret3) #(7) count() 调用者: queryset对象 返回值: int ret5=Book.objects.all().count() print(ret5) #(8) exist() # 返回bool值 ret8=Book.objects.all().exists() if ret8: print("ok")
上面查询返回的是一个queryset对象,其实这个是django自有的一种数据格式,因为外形跟python的列表一样
所以,也可以称之为列表,但是里面装的是对象,
values(),values_list(),distinc(),方法见下面。
--->双下划线的模糊查询
# 列名__gt 和 列名__lt:大于值,小于值 ret=Book.objects.filter(price__gt=10,price__lt=200) ret=Book.objects.filter(title__startswith="p") # 值以xx开头的 ret=Book.objects.filter(title__contains="h") # 包含XX的 ret=Book.objects.filter(title__icontains="h") # 不区分大小写包含的 ret=Book.objects.filter(price__range=[100,200]) # 在 xx-xx范围的 ret=Book.objects.filter(price__in=[200,300]) # 类似or ret=Book.objects.filter(pub_date__year=2018,pub_date__month=5) #datafield专有,年为XX的。
2>数据删除
删除方法就是delete(),
# delete: 调用者: queryset对象 model对象 ret=Book.objects.filter(price=100).delete() print(ret) # 返回删除的记录条数 Book.objects.filter(price=100).first().delete()
3>数据修改
# update : 调用者: queryset对象 ret=Book.objects.filter(title="php2").update(title="php") print(ret) # 返回修改的记录条数