当前位置: 首页 > news >正文

Django数据库查询操作

1、查询所有记录:模型名.objects.all()

    >>> from django.contrib.auth.models import User>>> users = User.objects.all()>>> users<QuerySet [<User: admin>, <User: zhanglaoshi>, <User: wanglaoshi>, <User: zhaolaoshi>,<User: zhoulaoshi>, <User: wulaoshi>, <User: danglaoshi>, <User: canglaoshi>, <User:hulaoshi>, <User: yinlaoshi>, <User: lulaoshi>, <User: chenlaoshi>, <User: kuanglaoshi>,<User: xiaodou>, <User: xiaojin>]>

查询结果保留在users序列中,获得序列中的一个元素,使用下述方式:

    >>> lu = users[10]>>> lu<User: lulaoshi>>>> lu.email'lu@laoshi.com'

2、精确查询:模型名.objects.get(字段名=字段值)

括号里面的是查询条件,可以设置一个以上的查询条件,中间用‘,’分开。

查询不到结果时:报错。

    >>> BlogArticles.objects.get(id=1)<BlogArticles: php is the best computer language>>>> BlogArticles.objects.get(title="Canglaoshi is a good teacher")<BlogArticles: Canglaoshi is a good teacher>>>> BlogArticles.objects.get(title="teacher")Traceback (most recent call last):File "/usr/lib/python3.5/code.py", line 91, in runcodeexec(code, self.locals)File "<console>", line 1, in <module>File "/usr/local/lib/python3.5/dist-packages/django/db/models/manager.py", line 85,in manager_methodreturn getattr(self.get_queryset(), name)(*args, **kwargs)File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 385, ingetself.model._meta.object_nameblog.models.DoesNotExist: BlogArticles matching query does not exist.

3、根据条件查询:模型名.objects.filter(过滤条件)

过滤不到结果时:返回空。

    >>> users_laoshi = User.objects.filter(username__endswith="laoshi")>>> users_laoshi<QuerySet  [<User:  zhanglaoshi>,  <User:  wanglaoshi>,  <User:  zhaolaoshi>,  <User:zhoulaoshi>, <User: wulaoshi>, <User: danglaoshi>, <User: canglaoshi>, <User: hulaoshi>,<User: yinlaoshi>, <User: lulaoshi>, <User: chenlaoshi>, <User: kuanglaoshi>]>

这里查询出username中以“laoshi”这个字符串结尾的对象。

除filter()能够实现根据条件查询外,还有exclude()

    >>> users = User.objects.filter(username__endswith="laoshi").exclude(id__gt=7)>>> users<QuerySet  [<User:  zhanglaoshi>,  <User:  wanglaoshi>,  <User:  zhaolaoshi>,  <User:zhoulaoshi>, <User: wulaoshi>, <User: danglaoshi>]>

4、查询结果排序

对于查询返回的QuerySet结果,默认是按照数据模型类中定义的字段排序的,如果要重新排序,可以使用order_by()方法。

    >>> u = User.objects.filter(username__startswith="z").order_by("username")>>> u<QuerySet [<User: zhanglaoshi>, <User: zhaolaoshi>, <User: zhoulaoshi>]>>>> u = User.objects.filter(username__startswith="z").order_by("-username")>>> u<QuerySet [<User: zhoulaoshi>, <User: zhaolaoshi>, <User: zhanglaoshi>]>

order_by()的参数中可以写多个字段名称,即按照字段前后顺序分别作为排序的“主关键词”和“次关键词”。

5、使用外键查询

定义ArticleColumn模型时,定义外键user如下:

user = models.ForeignKey(User, on_delete=models.CASCADE,related_name='article_column')

说明User一条记录,可以对应多个ArticleColumn记录,是一对多的关系,并且通过user可以查到其对应的ArticleColumn记录。related_name='article_columns' 提供了从 User 实例访问关联的 ArticleColumn 实例的方便方式。

user = User.objects.get(username='john_doe')
columns = user.article_columns.all()  # 获取所有与这个用户关联的 ArticleColumn 实例

如果没有定义related_name,则使用下述代码查询相关的ArticleColumn记录。

user = User.objects.get(username='john_doe')
columns = user.articlecolumn_set.all()  # 使用默认的反向关系名称

articlecolumn_set中的articlecolumn是模型名。

相关文章:

  • C# 观察者模式实现
  • 【Linux】深入理解 Linux 的 chmod 指令
  • 音视频-常用的分析工具介绍-连续补充
  • 基于Django的美团药品数据分析与可视化系统,有多用户功能,可增删改查数据
  • 产品经理交接规范及流程
  • vue3的api风格
  • 【学习笔记】后端(Ⅰ)—— NodeJS(Ⅰ)
  • 鸿蒙HarmonyOS开发:tabs结合tabContent实现底部tabBar导航栏页面布局
  • 再谈Google I/O 2024:开发者必看亮点
  • Redis-
  • pytorch-20 lstm实践
  • python输出水仙花数两种方法
  • 垃圾溢满堆放识别检测
  • Hugging Face的TrainingArguments常用参数学习
  • 【高阶数据结构】跳表
  • 10个确保微服务与容器安全的最佳实践
  • Bootstrap JS插件Alert源码分析
  • echarts花样作死的坑
  • github指令
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Javascripit类型转换比较那点事儿,双等号(==)
  • MYSQL 的 IF 函数
  • Travix是如何部署应用程序到Kubernetes上的
  • 百度地图API标注+时间轴组件
  • 从输入URL到页面加载发生了什么
  • 大快搜索数据爬虫技术实例安装教学篇
  • 大整数乘法-表格法
  • 面试总结JavaScript篇
  • #NOIP 2014#Day.2 T3 解方程
  • #QT(智能家居界面-界面切换)
  • #宝哥教你#查看jquery绑定的事件函数
  • #前后端分离# 头条发布系统
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (70min)字节暑假实习二面(已挂)
  • (C语言)二分查找 超详细
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (转)socket Aio demo
  • (转)大型网站架构演变和知识体系
  • (转)德国人的记事本
  • (轉)JSON.stringify 语法实例讲解
  • .Net Web项目创建比较不错的参考文章
  • .NET 表达式计算:Expression Evaluator
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net(C#)中String.Format如何使用
  • .net开发引用程序集提示没有强名称的解决办法
  • .NET中两种OCR方式对比
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [17]JAVAEE-HTTP协议
  • [4.9福建四校联考]
  • [AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • [C++数据结构](22)哈希表与unordered_set,unordered_map实现