Django学习笔记(二十):model模型查询

32 篇文章 8 订阅

查询集

查询集表示从数据库获取的对象集合

查询集科研有多个过滤器

 

过滤器

返回查询集的方法称为过滤器

过滤器就是一个函数,基于所给的参数限制查询集结果

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属于查找单条

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值