栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django的models查询进阶3

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django的models查询进阶3

查询的切片使用,相当于sql的limit和offset
def get_users(request):
    #切片的使用
    users=User.objects.all()[1:3]
    context={
        'users': users
    }
    return render(request,'get_users.html',context=context)
关于时间的查询,避免django默认时区timezone造成查询结果错误

可以修改settings.py 中的USE_TZ = True,改成false

def get_orders(request):
    #orders=Order.objects.filter(o_time__year=2019)
    #如果时间查询结果不对,可以在settings里关闭django的默认时区管理,即USE_TZ = True改为false.  TZ是timazone
    orders=Order.objects.filter(o_time__month=11)
    for order in orders:
        print(order.o_num,order.o_time)
    return HttpResponse("获取订单成功,订单")
外键的设定, 可以通过关联表字段直接查目标表的信息
def get_grades(request):
    #通过外键直接查
    grades=Grade.objects.filter(student__s_name__contains='mei')
    for grade in grades:
        print(grade.g_name)
    return HttpResponse('获取班级成功')
objects.aggregate的Avg Sum等求平均、求和函数的使用

注意此时的查询结果是一个字典

def get_cost(request):
    # customer=Customer.objects.aggregate(Avg('c_cost'))
    # customer=Customer.objects.aggregate(Max('c_cost'))
    customer=Customer.objects.aggregate(Sum('c_cost'))

    #注意此时获取的是一个字典。而不是带字段属性的Queryset
    print(customer)
    return HttpResponse('获取数据成功')
Django的ORM里F对象及Q对象函数的使用

F对象可以实现同一表内各字段的比较查询
Q对象是封装了条件,实现条件间的逻辑运算

  1. 与 & 相当于 and
  2. 或 | 相当于 or
  3. 非 ~ 相当于not
def get_company(request):
    #F对象操作,实现同一表内字段的比较查询
    # companys=Company.objects.filter(girl_num__lt=F('boy_num'))
    # 还可以实现运算后的比较,女生比男生减10个后还少的公司
    # companies=Company.objects.filter(girl_num__lt=F('boy_num')-10)
    # Q函数,实现filter的封装,实现条件的逻辑运算(与  &==and     或 |==or  非   ~==not)
    companies=Company.objects.filter(Q(girl_num__lt=60) | Q(boy_num__gt=50))

    for company in companies:
        print(company.c_name)
    return HttpResponse('获取数据成功')
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/342240.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号