首页 > 其他分享 >Django ORM 常用的13个方法

Django ORM 常用的13个方法

时间:2024-03-15 10:25:45浏览次数:18  
标签:13 objects models ORM 指定 Django Book 列表 id

Django ORM 常用的13个方法

介绍一个可以以py脚本方式运行ORM操作的方法:

可在项目内新建个py文件,复制项目内manage.py文件中的以下代码:

if __name__ == "__main__":

     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ORM1.settings")

     import django  # 手动添加导入

     django.setup()  # 启动

     form app01 import models  # 从项目app内导入models

然后就可以以右键运行的方式来操作ORM语句了.

一. 必会的13条方法:

  1. models.Book.objects.all() # 获取到所有的书籍对象,结果是对象列表

  2. models.Book.objects.get(条件) # 获取符合条件的对象

  3. models.Book.objects.filter(条件) # 筛选所有符合条件的,结果是对象列表

  4. models.Book.objects.exclude(条件) # 筛选出所有不符合条件的,结果是对象列表

  5. models.Book.objects.all().values( ) # 字典列表,[ {id:1,name:20} , {id:2,name:18} ]

    values(‘id’)括号内不指定时显示全部,如指定则只显示指定的,[ {id:1} , {id:2,} ]

  6. models.Book.objects.all().values_list( ) # 元组列表,[ (1,20) , (2,18) ]同上,指定时显示指定内容

  7. models.Book.objects.all().order_by(‘id’) # 按照id升序就行排列

    models.Book.objects.all().order_by(‘-id’) # 按照id降序就行排列

    models.Book.objects.all().order_by(‘age’ , ‘-id’) # 先按age升序,age相同的按id进行降序排列

  8. models.Book.objects.all().order_by(‘id’).reverse() # 对结果反转; 注意reverse前必须排序,

    否则reverse无效; 或在model.py文件中Book类中的Meta中指定ordering=(‘id’ , )注意逗号必须有

  9. distinct(): # 去重,当获取到的结果Queryset列表中同一对象出现多次时去重,只留一个

  10. models.Book.objects.all().count() # 计数,可统计结果个数,如对Queryset内元素数进行统计.

  11. models.Book.objects.all().first() # 获取结果中的第一条,即使前面结果列表为空,也不会报错

  12. models.Book.objects.filter().last() # 获取结果中的最后一条

13.models.Book.objects.filter().exists() # 判断Queryset列表是否有东西,结果为True或False;

二. 小结:

返回对象列表(Queryset)的方法有:

all() filter() ordey_by() exclude() values() values_list() reverse() distinct()

返回单个对象的方法有:

first() last() get() create()创建一个对象,且返回刚创建的对象

判断布尔值的有:

exists()

返回数字的有:

count()

函数名称或修饰词 说明
filter() 返回符合指定条件的QuerySet
exclude() 返回不符合指定条件的QuerySet
ordey_by() 串接到QuerySet之后,针对某一指定的字段进行排序
all() 返回所有的QuerySet
get() 获取指定符合条件的唯一元素,如果找不到或有一个以上符合条件,都会产生exception
first()/last() 获取第1个和最后一个元素
aggregate() 可以用来计算数据项的聚合函数
exists() 用来检查是否存在某指令条件的记录,通常附加在filter后面
update() 用来快速更新某些数据记录中的字段内容
delete() 删除指定的记录
iexact 不区分大小写的条件设置
contains/icontains 设置条件为含有某一字符串就符合,如SQL语句中的LIKE和ILIKE
in 提供一个列表,只要符合列表中任何一个值均可
gt/gte/lt/le 大于/大于等于/小于/小于等于

标签:13,objects,models,ORM,指定,Django,Book,列表,id
From: https://www.cnblogs.com/HeroZhang/p/18074844

相关文章

  • Django model select的各种用法详解
    Djangomodelselect的各种用法详解摘自:https://www.cnblogs.com/skbarcode/p/12584387.html基本操作#获取所有数据,对应SQL:select*fromUserUser.objects.all()#匹配,对应SQL:select*fromUserwherename='运维咖啡吧'User.objects.filter(name='运维咖啡吧')#......
  • 使用ScottPlot开源库在WinForms中快速实现大型数据集的交互式图表显示
    思维导航前言ScottPlot类库介绍ScottPlot类库支持平台和框架ScottPlot类库源代码新建WinForms项目安装ScottPlot.WinForms包折线图实现柱状图实现饼图实现散点图实现项目演示入口项目源码地址优秀项目和框架精选DotNetGuide技术社区交流群前言在.NET应用开......
  • PyInstaller does not include a pre-compiled bootloader for your platform.
    用PyInstaller打包python程序时,收到下面错误:User140343INFO:BuildingPKGbecausePKG-00.tocisnonexistent140344INFO:BuildingPKG(CArchive)mainwindow.pkg215759INFO:BuildingPKG(CArchive)mainwindow.pkgcompletedsuccessfully.215891INFO:Bootloa......
  • PyInstaller does not include a pre-compiled bootloader for your platform.
    用PyInstaller打包python程序时,收到下面错误:User140343INFO:BuildingPKGbecausePKG-00.tocisnonexistent140344INFO:BuildingPKG(CArchive)mainwindow.pkg215759INFO:BuildingPKG(CArchive)mainwindow.pkgcompletedsuccessfully.215891INFO:Bootloa......
  • 代码随想录算法训练营第day46|139.单词拆分 、多重背包
    目录139.单词拆分多重背包 139.单词拆分力扣题目链接(opensnewwindow)给定一个非空字符串s和一个包含非空单词的列表wordDict,判定 s是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单......
  • jinja2模块模板语法 django基础
    jinja2去数据库中获取数据,传递给HTML页面,借助于模板语法发送给浏览器还能帮你简单方便的操作字典去后端获取数据库中数据展示到前端页面importpymysqldefget_user(env):去数据库中获取数据,传递给HTML页面,借助于模板语法发送给浏览器还能帮你简单方便的操作字典......
  • 使用Dockerfile构建一个django项目
    公司使用docker流程(以图书管理系统为例)第一步:有一个项目,pycharm开发着,开发完后第二步:在项目路径下新建Dockerfile,写入FROMpython:3.9MAINTAINERzengWORKDIR/softCOPY./requirements.txt/soft/requirements.txtRUNpipinstall-rrequirements.txt-ihttps://pypi.d......
  • Transformer框架+编码器+解码器
    2024.3.14Transformer框架+编码器+解码器预训练----->NNLM----->word2vec------>ElMo--->AttentionNLP(自然语言处理)中预训练的目的,其实就是为了生成词向量transformer其实就是attention的一个堆叠Transformer的整体框架[Transformer框架]:对Transformer模型中各个结构的理......
  • 代码随想录算法训练营第四十六天| 139.单词拆分 多重背包 背包问题总结篇!
    单词拆分 题目链接:139.单词拆分-力扣(LeetCode)思路:竟然真能转化为背包问题。classSolution{public:boolwordBreak(strings,vector<string>&wordDict){unordered_set<string>t(wordDict.begin(),wordDict.end());vector<bool>dp(s.size()+......
  • gorm使用事务并发情况下切有最大mysql连接数限制的情况下的BUG,踩坑了
    现象服务器pprof中的goroutines很多,无法释放,肯定是异常.代码//收到请求上个赛季个人秘境赛季排行func(this*MsgProc)MsgProc_PersonSecretLastRankReq(msg*protoMsg.PersonSecretLastRankReq){ global.GetSrvInst().GetThreadGo().Go(func(ctxcontext.Context)......