一、增加

create和save方法

实例:

1、增加一条作者记录

>>> from hello.models import *
>>> Author.objects.create(name='胡大海') >>> AuthorDetail.objects.create(sex=False,email='333@qq.com',address='北京XX',birthday='1988-1-2',author_id=1)

2、增加一条出版社记录

>>> pub=Publisher()
>>> pub.name='电子工业出版社'
>>> pub.address='成都华阳'
>>> pub.city='成都'
>>> pub.state_province='四川'
>>> pub.country='中国'
>>> pub.website='http://www.maiziedu.com'
>>> pub.save()

3、增加一条书籍记录

>>> Book.objects.create(title='python实战',publisher=pub,publication_date='2009-5-6')
>>> book=Book.objects.get(id=1)
>>> author=Author.objects.get(id=1)
>>> book.authors.add(author)

objects:model默认管理器。create是这个管理器里面的方法。

插入主外键关系的时候,可以用对象的方式,也可以直接以关联id的方式。

插入多对多关系的时候要分步操作。

save是model对象的方法。

二、修改

update和save方法

实例:

1、修改id为1的作者的名字为叶良辰,性别改为女

>>> Author.objects.filter(id=1).update(name='叶良辰')
>>> AuthorDetail.objects.filter(author__id=1).update(sex=True)

2、修改名为“电子工业出版社”的出版社的网址为 http://www.google.com,城市为重庆

Publisher.objects.filter(name='电子工业出版社').update(city='重庆',website='http://www.google.com')

update()方法是QuerySet对象的方法

三、查询(惰性机制)

实例:

1、查询所有的出版社信息

>>> Publisher.objects.all()

所谓惰性机制:Publisher.objects.all() 只是返回了一个QuerySet(查询结果集对象),并不会马上执行sql,而是当调用QuerySet的时候才执行。

四、删除

delete方法

实例:

1、删除id为1的书籍信息;

>>> Book.objects.filter(id=1).delete()

2、删除出版社城市为重庆的记录;

>>> Publisher.objects.filter(city='重庆').delete()

注意:django中的删除默认是级联删除。

delete方法也是QuerySet对象的方法

更多详见:https://docs.djangoproject.com/en/1.10/ref/models/querysets/


***微信扫一扫,关注“python测试开发圈”,了解更多测试教程!***

Django进阶Model篇004 - ORM常用操作的更多相关文章

  1. Django进阶Model篇005 - QuerySet常用的API

    django.db.models.query.QuerySet QuerySet特点: 1.可迭代 2.可切片 查询相关API 1.get(**kwargs):返回与所给的筛选条件相匹配的对象,返回结 ...

  2. Django进阶Model篇—数据库操作(ORM)

    一.数据库配置 django 默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持,具体详见https://docs.d ...

  3. Django进阶Model篇008 - 使用原生sql

    注意:使用原生sql的方式主要目的是解决一些很复杂的sql不能用ORM的方式写出的问题. 一.extra:结果集修改器-一种提供额外查询参数的机制 二.执行原始sql并返回模型实例 三.直接执行自定义 ...

  4. Django进阶Model篇002 - 模型类的定义

    一.创建数据模型. 实例: 作者模型:一个作者有姓名. 作者详情模型:把作者的详情放到详情表,包含性别.email 地址和出生日期,作者详情模型与作者模型之间是一对一的关系(OneToOneField ...

  5. Django进阶Model篇001 - mysql 数据库的配置

    django 默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持,具体详见: https://docs.djangop ...

  6. Django进阶Model篇007 - 聚集查询和分组查询

    接着前面的例子,举例聚集查询和分组查询例子如下: 1.查询人民邮电出版社出了多少本书 >>> Book.objects.filter(publisher__name='人民邮电出版社 ...

  7. Django进阶Model篇003 - 数据库同步技巧

    一.认识一个目录 目录名:migrations 作用:用来存放通过makemigrations命令生成的数据库脚本,不熟悉的情况下,里面生成的脚本不要轻易修改.app目录下必须要有migrations ...

  8. Django进阶Model篇006 - 多表关联查询

    接着前面的例子,举例多表查询实例如下: 1.查询作战的所有完整信息. >>> AuthorDetail.objects.values('sex','email','address', ...

  9. Django基础——Model篇(一)

    到目前为止,当程序涉及到数据库相关操作时,我们一般都会这么操作:    (1)创建数据库,设计表结构和字段    (2)使用MySQLdb来连接数据库,并编写数据访问层代码    (3)业务逻辑层去调 ...

随机推荐

  1. php accumulation rockmongo

    php -r 'echo substr(sprintf("%o",fileperms("./")),-4);'

  2. dev EditMask 设置方法

    官方帮助地址: https://documentation.devexpress.com/WindowsForms/583/Controls-and-Libraries/Editors-and-Sim ...

  3. 转!java web项目 build path 导入jar包,tomcat启动报错 找不到该类

    在eclipse集成tomcat开发java web项目时,引入的外部jar包,编译通过,但启动tomcat运行web时提示找不到jar包内的类,需要作如下配置,将jar包在部署到集成的tomcat环 ...

  4. AHOI2019退役记

    $DAY\quad -1$: 连作业都不写了来刷题... 希望能长点$RP$吧... 反正也是抱着退役的心情来考试... 我要是到了周日还不出长门我就退游!!! $DAY\quad 0$: 早上一起来 ...

  5. 小木虫emuch遭封禁,新域名muchong.com尚可用

    各位虫友: 因为小木虫站点个别虫子违反论坛规定,擅自上传了政治擦边的违规资源.导致小木虫域名 emuch.net 被通信局封禁! 我们第一时间对违规资源进行了删除处理,接下来.我们也将大批量的对站内的 ...

  6. python2 跟3的区别

    1----python2:1 臃肿 , 源码的重复量很多2:语法不清晰,掺杂着 c,pyp,java,的一些陋习 python3: 几乎是重构后的源码,规范 清晰 优美 2.python的分类 分为编 ...

  7. python入门三:文件操作

    一.文件操作 1.文件对象:和c一样,要想对一个文件进行操作,需要获取该文件的对象 f = open("xxx") # 打开文件并获取文件对象 f.xxx # 对文件进行某些操作 ...

  8. poj2996

    /*排序函数要写对,优先级:K,Q,R,B,N,P 白色的:如果优先级一样,那么按照行数大的优先,如果行数一样,那么列数小的优先 黑色的:如果优先级一样,那么按照行数小的优先,如果行数一样,那么列数小 ...

  9. Mybatis之基础应用小结以及IntelliJ IDEA目录结构的一些小问题

    IntelliJ IDEA 目录结构的一些小问题 [Mybatis 之基础应用小结] 1.不管怎么样,先建立一个简单的MySQL数据表,如下所示 2.接下来要做的事情就是通过Mybatis对数据表进行 ...

  10. gvim中对变量的识别

    最近在项目中使用gvim打开一个文件,发现对某个变量不识别. 后来发现是gvim中对{$comm_ver},带花括号的变量不识别. 类似这样:parameter memory_spec = " ...