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

Django中ORM之操作表记录

添加表记录

添加普通字段

   #方法一
    book_obj = Book(title='book7',publishDate='2011-05-02',price=200,publish_id=1)
    book_obj.save()
    
    #方式二
    Book.objects.create(title='book8',publishDate='2014-05-02',price=200,publish_id=1)

添加外键字段

   #方法一
    publish_obj = Publish.objects.get(nid=1)
    Book.objects.create(title='book7',publishDate='2011-05-02',price=200,publish=publish_obj)
    
    #方法二
    Book.objects.create(title='book8', publishDate='2014-05-02', price=200, publish_id=1)

多对多字段

  #多对多字段
    book_obj = Book.objects.create(title='book9', publishDate='2015-05-02', price=200, publish_id=1)
    author_1 = Author.objects.create(name='a1',age=20)
    author_2 = Author.objects.create(name='a2',age=23)
    book_obj.authors.add(author_1,author_2) #将某个特定的model对象添加到被关联对象集合中
    book_obj.authors.create()               #创建并保存一个新对象

    #解除关系
    book_obj.authors.remove() #将某个特定的对象从被关联对象集合中去除
    book_obj.authors.clear()  #清空被关联对象集合
    book_obj.authors.set(author_1) #先清空,再设置
  
  #对于所有类型的关联字段,add()、create()、remove()和clear(),set()都会马上更新数据库。在关联的任何一端,都不需要再调用save()方法

修改表记录

  update是QuerySet对象的方法,get返回的是一个model对象,没有update方法。update()方法对于任何QuerySet均有效,这意味着你可以同时更新多条记录,update()方法会返回一个整型数值,表示受影响的记录条数。

    
    #方式一
    author_obj = Author.objects.get(id=5)
    author_obj.name = 'jane'
    author_obj.save()

    #方式二
    Author.objects.filter(id=5).update(name='jane')

删除表记录

   删除方法就是delete(),它运行时立即删除对象而不返回任何值

  你也可以一次性删除多个对象,每个QuerySet都有一个delete方法,它一次性删除QuerySet中所有的对象。

  无论在什么情况下,QuerySet中的delete()方法都只使用一条SQL语句一次性删除所有对象,而并不是删除每个对象。如果你想使用在model中自定义的delete()方法,就要自行调用delete方法

Book.objects.filter(publishDate__year='2011').delete()

 

转载于:https://www.cnblogs.com/iamluoli/p/8984503.html

相关文章:

  • Flann库的MATLAB接口编译
  • #includecmath
  • 你相信永生吗?
  • 6421B Lab10 网络文件和打印服务的配置与故障排除
  • 记录idea创建多模块项目遇到的问题(Spring cloud项目,maven父子关系无法继承,使用模板创建web项目无法生成java和resource文件夹)...
  • QQ开放API
  • 【性能优化实践】优化打包策略提升页面加载速度
  • #、%和$符号在OGNL表达式中经常出现
  • JavaEE进阶知识学习-----SpringCloud(二)实践准备
  • JavaScript And Ajax(JavaScript 基本示例)
  • linux centos 如何设置swap大小?
  • 【资源共享】RK3288 WiFiBT 开发配置参考说明
  • 仪表运算放大器INA333
  • 5分钟快速了解es6常用特性
  • Hadoop 2.0 NameNode HA和Federation实践
  • [iOS]Core Data浅析一 -- 启用Core Data
  • Android优雅地处理按钮重复点击
  • co模块的前端实现
  • Docker下部署自己的LNMP工作环境
  • es的写入过程
  • jdbc就是这么简单
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • js面向对象
  • nodejs实现webservice问题总结
  • Promise面试题2实现异步串行执行
  • win10下安装mysql5.7
  • 盘点那些不知名却常用的 Git 操作
  • 如何设计一个微型分布式架构?
  • 算法系列——算法入门之递归分而治之思想的实现
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (1)SpringCloud 整合Python
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (JS基础)String 类型
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (七)理解angular中的module和injector,即依赖注入
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .NET 8.0 中有哪些新的变化?
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .net中应用SQL缓存(实例使用)
  • @Bean, @Component, @Configuration简析
  • @ModelAttribute使用详解
  • @Responsebody与@RequestBody
  • @SpringBootApplication 包含的三个注解及其含义
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • [BZOJ 3680]吊打XXX(模拟退火)
  • [codeforces]Checkpoints
  • [CSS]中子元素在父元素中居中
  • [C语言]——柔性数组
  • [Flex][问题笔记]TextArea滚动条问题