查询集
查询集表示从数据库获取的对象集合
查询集科研有多个过滤器
过滤器
返回查询集的方法称为过滤器
过滤器就是一个函数,基于所给的参数限制查询集结果
all() 返回所以数据
filter() 返回符合条件的数据
exclude() 过滤掉符合条件的数据
values() 一条数据就是一个字典,返回一个列表
get() 返回一个满足条件的对象
first() 返回查询集中的第一对象
last() 返回查询集中的最后一个对象
count() 返回当前查询集中的对象个数
exists() 判断查询集中是否有数据,有数据就返回True
all()[0:5] 限制查询集
聚合函数
使用aggregate()函数返回聚合函数的值
Avg:平均值
Count:数量
Max:最大
Min:最小
Sum:求和
使用实例
def get_count(request):
# 拿全部的数据
players = Player.objects.all()
# 求火力输出总和
res = players.aggregate(Sum('count'))
print(res)
return HttpResponse(res.get('count__sum'))
F,Q
F,将同一模型的两个字段属性进行比较
def get_player(req):
#需求:年纪大于火力输出的数据
res = Player.objects.filter(age__gt=F('count'))
#将查询出来的对象,全部转成数组嵌套字段的格式
result = [model_to_dict(i) for i in res]
return HttpResponse(jion.dumps(result))
Q,多条件组合查询
def get_player_by_q(req):
# 需求:查询年纪大于30 火力输出大于100
res = Player.objects.filter(Q(age__gt=30) | Q(count__gt=100))
return HttpResponse(res)
修改数据
def refer(req):
if req.method =='GET':
return render(req,'show/refer.html')
else:
title = req.POST.get("title")
content = req.POST.get("content")
author = req.POST.get("author")
print(title,content,author)
message = Sciencenews.objects.get(id = 1)
message.title = title
message.content = content
message.author = author
message.save()
return HttpResponse('修改成功')
修改:list=Shop.objects.filter(id=2).update(shopname='ljl') 只在数据库显示,页面没有显示
删除:list=Shop.objects.all().delete()
增加:list=Shop.objects.create(shopname='liu')
查找:list=Shop.objects.filter(id=2).all() 查找:filter属于查找单条