千家信息网

django中ORM的查询语句是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,django中ORM的查询语句是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在日常开发中,数据库的增删改查(CDUR)中,查询需求
千家信息网最后更新 2026年11月01日django中ORM的查询语句是什么

django中ORM的查询语句是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

在日常开发中,数据库的增删改查(CDUR)中,查询需求偏多,所以查询的语法比增删改操作多得多,尤其是跨表关联查询,可以让代码精简很多。

直接上代码吧,我是直接在上次写的的视图函数中改写的。


def orm_test(request):    """    增加操作    """    # 新增一个名字为1901的一个班级,create是新增方法,里面可以接受多个字段参数    # Class.objects.create(name="1901")    # 同时新增一个学生和班级操作    # 新增一个班级名称为1903的班级,返回一个班级实例    # cls_instance = Class.objects.get(name="1903")    # stu_info左边的key要和Student模型字段对应上,因为cls是外键,所以要对应一个班级的实例    # stu_info = {    #     "name":"XIAOmei",    #     "age": "24",    #     "score":"88",    #     "email": "1333@qq.com",    #     "introduce": "假如你是xiaomei",    #     "cls": cls_instance    # }    # Student.objects.create(**stu_info)    """    修改操作    """    # 将名字为1901的班级名称改为1901_xiu,filter为过滤,支持多个参数,update是更新方法,支持多个参数    # Class.objects.filter(name="1901").update(name="1901_xiu")    """    删除操作    """    # 将名字为1901_xiu的班级删除掉,delete是删除方法    # Class.objects.filter(name="1901_xiu").delete()    """    查询操作    """    # 查询单条,get返回实例,如果查询结果没有回报错,    # filter查询返回的结果是多个实例的列表,    # instance = Student.objects.get(pk=1)    #instance = Student.objects.filter(pk=1).first()
# 查询多条,返回queryset类型(多个查询结果实例的列表) 可以被迭代 # queryset = Student.objects.all() # # for stu in queryset: #学生的姓名 学生的年龄 学生的分数 # print(stu.name,stu.age,stu.score)
#对查询集结果进行切片,取第0个到第4个,和列表的切片一样 # queryset = Student.objects.filter().all()[:5] # limit 语句 # print(queryset.query) # 返回执行的sql语句
# 精准查找 两条语句作用一样,查询姓名位小美的学生,结果返回查询集 # queryset = Student.objects.filter(name='小美') # queryset = Student.objects.filter(name__exact='小美')
# 忽略大小写 # queryset = Student.objects.filter(name__iexact='xiaomei')
# 模糊查询 # queryset = Student.objects.filter(name__contains='xiao') # 不忽略大小写 # queryset = Student.objects.filter(name__icontains='xiao') # 忽略大小写
# 正则匹配法 # queryset = Student.objects.filter(name__regex='^x') # queryset = Student.objects.filter(name__iregex='^x')
# 大于 小于 # queryset = Student.objects.filter(age__gt=17, age__lt=19)
# in 一个集合中的所有 # queryset = Student.objects.filter(age__in=(18,17,16))
# queryset = Student.objects.all().order_by('age') 升序 # queryset = Student.objects.all().order_by('-age') #升序 # queryset = Student.objects.all().order_by('-age','id') #升序 # for stu in queryset: # print stu.age,stu.id
# 指定字段查询 # 第一种 # queryset = Student.objects.values('name','age').all()
# 第二种 # queryset = Student.objects.values_list('name','age','score').all()
# 连表查询 # 第一种 # queryset = Student.objects.all() # for stu in queryset: # print stu.name,stu.cls.id,stu.cls.name
# 第二种 : 牛逼的双下划线(跨表),可以用多个双下划线跨多张表 # 语句功能是查询学生表中所有学生的姓名和学生所在班级的名称 # cls__name 是cls双下划线name,cls 是Student中的cls字段,name是班级表中的name字段 # queryset = Student.objects.values('name','cls__name').all()
# 查询一个班级所有学生,执行两次sql语句 # cls1 = Class.objects.get(name='1701') # queryset = Student.objects.filter(cls=cls1)
# 查询一个班级所有学生,执行一次sql语句 # queryset = models.Student.objects.filter(cls__name='1903').all().values('name','cls__name')
# 查询一个班级所有学生,起始表从班级表开始查询,反向查询 # stu_cls 是学生表中外键的别名 # queryset = Class.objects.get(name='1903').stu_cls.all()
# 按照分数查询 大于90分 # queryset = Student.objects.filter(score__gt=90).all()
return HttpResponse('数据库操作成功')

看完上述内容,你们掌握django中ORM的查询语句是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

查询 班级 学生 语句 多个 字段 实例 方法 结果 下划线 升序 参数 名字 名称 大小 姓名 代码 内容 分数 数据 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手磨咖啡 华服互联网科技靠谱吗 湖南永感互联网科技有限公司 麻工互联网科技 互联网科技公司有哪些 联恩商钥互联网科技有限公司 福州新华互联网科技学校 知乎 央行互联网金融科技公司 互联网对科技的发展 福建科技产业互联网发展 岳阳华臻互联网科技有限公司 注册互联网科技公司经营范围大全 广州市恰铎互联网科技有限公司 青海科技产业互联网发展 中国互联网公司排名锤子科技 阿里互联网科技企业 互联网时代的科技公司 陕西云淼互联网科技公司 易企秀互联网科技是做什么的 每日互联网科技新闻 上海挚品互联网科技 国外互联网科技网站 开启互联网科技时代小说 金融科技与互联网金融相同和不同 互联网公司科技股 链环科技传统企业怎么转型互联网 中国科技创新与世界互联网大会 艺电能源互联网科技有限公司招聘 互联网的黑科技实验室 互联网企业和网络科技有限公司
0