Django学习之模型层---数据查询及删改

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)  # 返回修改的记录条数

猜你喜欢

转载自blog.csdn.net/huangql517/article/details/81092872
今日推荐