一、增加

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. scrapy item

    item item定义了爬取的数据的model item的使用类似于dict 定义 在items.py中,继承scrapy.Item类,字段类型scrapy.Field() 实例化:(假设定义了一个名 ...

  2. Django - 权限(4)- queryset、二级菜单的默认显示、动态显示按钮权限

    一.queryset Queryset是django中构建的一种数据结构,ORM查询集往往是queryset数据类型,我们来进一步了解一下queryset的特点. 1.可切片 使用Python 的切片 ...

  3. Linux ssh面密码登录

    1.生成自己的公钥和私钥 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa 进入~/.ssh目录看多了两个文件:id_rsa  id_rsa.pub  其中一个是公钥一 ...

  4. Linux学习笔记—vim程序编辑器

    vi和vim vim是vi的升级版,支持vi的所有指令 vi的使用 vi分为三种模式:一般模式.编辑模式.命令行模式 一般模式 以vi打开一个文件就直接进入一般模式了,这个模式下可以使用上下左右按键来 ...

  5. 从SNE到t-SNE再到LargeVis

    http://bindog.github.io/blog/2016/06/04/from-sne-to-tsne-to-largevis/

  6. JS操作时间 - UNIX时间戳简单介绍

    准备知识 GMT(Greenwich Mean Time) - 格林尼治时间.UTC(Universal Time Code) - 国际协调时间.PST(Pacific Standard Time,太 ...

  7. DBMS_MONITOR程序开启10046事件

    在具有连接池或共享服务器的多层环境中,一个会话可以跨越多个进程,甚至跨越多个实例.DBMS_MONITOR是在Oracle 10g中引入的内置的程序包,通过该程序包可以跟踪从客户机到中间层.再到后端数 ...

  8. 设置SVN提交日志必填

    1.打开visualSVN Server2.打开Repositories3.右键需要控制的项目->所有任务->manage hooks...4.选择Hooks tab,点击Pre-comm ...

  9. 【工具】Notepad++ 上,代码格式化工具

    一.概述 Windows 自带的记事本功能太过简单,因此我常常使用 Notepad++ 查看文本.Notepad++ 支持插件功能,最近需要使用 Notepad++ 查看 Html 代码,而这些代码多 ...

  10. boot空间不足,删除Ubuntu旧内核

    0 Problem 今天打开电脑的时候ubuntu提示boot空间不足.查了资料,原来Ubuntu的自动升级并没有删除系统的旧内核,于是boot下旧的内核文件越积越多,最后就满了. 1 Solutio ...