10.Django数据库操作(增删改)
插入数据
命令:create 或者 save
create用法:ModelName.objects.create(itemName="itemValue")
save用法:modelName = ModelName()
modelName.itemName = itemValue
modelName.save()
说明:create是objecet管理器(model默认管理器)的方法,save是model对象的方法
例子:
1.给Author表插入一条记录,其中name的值为 测试name(普通单表插入)
方法一:Author.objects.create(name="测试name")
方法二:author = Author()
author.name = "测试name"
author.save()
说明:分别是create和save的演示
2.给AuthorDetail表插入一条记录,记录Author表中id为1的作者细节信息(1对1关系)
# sex = models.BooleanField(max_length=1, choices=((0, '男'), (1, '女'),))
# email = models.EmailField()
# address = models.CharField(max_length=50)
# birthday = models.DateField()
# author = models.OneToOneField(Author)
方法一:AuthorDetail.objects.create(
sex=False,
email="admin@admin.com",
address="中国",
birthday="1988-1-1",
author_id=1)
方法二:Author.objects.create(name="测试name")
author = Author()
author.name = "测试name"
author.save()
AuthorDetail.objects.create(
sex=False,
email="admin@admin.com",
address="中国",
birthday="1988-1-1",
author=author)
说明:对于这种1对1或者1对多的插入,可以有两种方式,第一种就是方法一中,直接用author_id=1这种,另一种是直接传递个对象,像方法二中那样,直接传autho=author框架会自己去找到对应的id存入到数据库中,在这个例子中,是使用先创建author在把这个author保存,然后传递给authorDetail的,在实际中,该author对象也有可能是直接从数据库查出来的,只要是数据库里确实有的author对象就可以
3.插入一条Book信息(多对多)
# title = models.CharField(max_length=100)
# authors = models.ManyToManyField(Author)
# publisher = models.ForeignKey(Publisher)
# publication_date = models.DateField()
步骤1:插入Book表(写入Book中所有非Many-to-Many的字段)
book = Book()
book.title ="python学习"
book.publisher_id ="1"
book.publication_date ="2000-1-1"
book.save()
步骤2:插入Book表和Author表的关联表(处理Many-to-Many字段)
book.authors.add(Author.objects.get(id=1))
修改数据
命令:update 或者 save
例子:讲Author表中id为1的记录的name改为xiaol
save方法:
author = Author.objects.get(id=1)
author.name="xiaol"
author.save()
update方法:
Author.objects.filter(id=1).update(name="xiaol")
删除数据
命令:delete
用法:ModelName.objects.filter(param).delete()
说明:默认下delete是级联删除
例子:删除Author表中id为1的数据
Author.objects.filter(id=1).delete()
官方文档:https://docs.djangoproject.com/en/1.9/ref/models/querysets/
10.Django数据库操作(增删改)的更多相关文章
- Django数据库操作(增删改查)
Django数据库操作(增删改查) 创建数据库中的一个表 class Business(models.Model): #自动创建ID列 caption = models.CharField(max_l ...
- django数据库操作-增删改查-多对多关系以及一对多(外键)关系
一.一对多(外键) 例子:一个作者对应多本书,一本书只有一个作者 model代码: class Person(models.Model); name = models.CharField('作者姓名' ...
- 转: django数据库操作-增删改查-多对多关系以及一对多(外键)关系
原文链接:http://blog.csdn.net/u010271717/article/details/22044415 一.一对多(外键) 例子:一个作者对应多本书,一本书只有一个作者 model ...
- Yii数据库操作增删改查-[增加\查询\更新\删除 AR模式]
在Yii的开发中常常需要去使用Yii的增删改查方法,这些方法又可以多次变化和组合,带来全方位的实现对数据库的处理,下面对这些方法做一些简单的整理和梳理,有遗漏或是BUG,敬请指出.灰常感谢!!! 一. ...
- Android下数据库操作——增删改查
Android下数据库第一种方式增删改查 1.创建一个帮助类的对象,调用getReadableDatabase方法,返回一个SqliteDatebase对象 2.使用SqliteDat ...
- SpringBoot 数据库操作 增删改查
1.pom添加依赖 <!--数据库相关配置--> <dependency> <groupId>org.springframework.boot</groupI ...
- django数据库的增删改查
正常启动服务安装数据库cmd命令:python manage.py makemigrations 创建用户 在pxm里面会有一个py文件..这就是生成了表结构cmd命令:python manage.p ...
- spring框架学习之--数据库操作增删改查
基于spring的NamedParameterJdbcTemplate操作数据库 首先在 resources 文件夹下添加数据库配置文件jdbc.properties 配置常用的数据库信息 consu ...
- Yii2.0数据库操作增删改查详解
1.简单查询: one(): 根据查询结果返回查询的第一条记录. all(): 根据查询结果返回所有记录. count(): 返回记录的数量. sum(): 返回指定列的总数. average(): ...
随机推荐
- EffectiveJava(15)强化对象和域的不可变性
概念: 不可变类是其实例不能被修改的类,不可变类比可变类更加易于设计 实现和使用.它们不容易出错,而且更加安全. 优点 1.不可变对象只有创建时状态. 2.不可变对象本质上是线程安全的,它们不要求同步 ...
- MySql中文乱码问题(3)
MySql的client是在dos界面上,然而dos界面默认的字符集编码方式是:GBK (1).MySql字符转换原理图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi ...
- Win10系统如何关闭"启用病毒防护""启用Windows防火墙"提示?
Win10系统如何关闭"启用病毒防护""启用Windows防火墙"提示? 目前已经有不少有用户升级到了win10正式版系统,不过有一些原win7/win8. ...
- react-native 常见问题 及 解决方案
一.报错 Warning:Navigator:isMounted is deprecated. Instead, make sure to clean up subscriptions and pen ...
- 初探J2EE
还记得在技术交流会上八期给我们讲的J2EE,当时就是云里来屋里去.留在自己脑子中的仅仅有两个字"规范",其他的真是一无全部. 可是如今学了后,又在脑子里留下了两个字"规范 ...
- orcad 里误给元件添加了属性,如何删除
1.先尝试点击delete property 2.第一步不行就右键选择filters----->remove current filter进行删除
- [转] java代码块 介绍
//执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 1 //普通代码块 ...
- Ubuntu安装sublime test 3 (Build 3126)
Ubuntu下 Sublime Text 3 (Build 3143) 存在一些bug........ 满心欢喜地更新后, 又默默换回Build 3126 1. 安装 sudo apt-get upd ...
- java中利用WeakHashMap实现缓存
简介 WeakHashMap是Java集合框架里的一员,从名字可以看出它是某种 Map.它的特殊之处在于 WeakHashMap 里的entry可能会被GC自动删除,即使程序员没有调用remove() ...
- asp.net core 系列之Response caching(1)
这篇文章简单的讲解了response caching: 讲解了cache-control,及对其中的头和值的作用,及设置来控制response caching; 简单的罗列了其他的缓存技术:In-me ...