转: django数据库操作-增删改查-多对多关系以及一对多(外键)关系
原文链接:http://blog.csdn.net/u010271717/article/details/22044415
一、一对多(外键)
例子:一个作者对应多本书,一本书只有一个作者
model代码:
- class Person(models.Model);
- name = models.CharField('作者姓名', max_length=10)
- age = models.IntegerField('作者年龄')
- class Book(models.Model):
- person = models.ForeignKey(Person, related_name='person_book')
- title = models.CharField('书籍名称', max_length=10)
- pubtime = models.DateField('出版时间')
(一)获取对象方法:
1.从作者出发获取书籍
- person = Person.objects.fiter(你的条件)
- book = person.book_set.all()
2.从书籍出发获取作者
- p = book.person
二、多对多
例子:一个作者对应多本书,一本书有多个作者
model代码:
- class Author(models.Model):
- first_name = models.CharField(max_length=30)
- last_name = models.CharField(max_length=40)
- email = models.EmailField()
- class Book(models.Model):
- title = models.CharField(max_length=200)
- authors = models.ManyToManyField(Author)
(一)获取对象方法:
1.从书籍出发获取作者
- b = Book.objects.get(id=50)
- b.authors.all()
- b.authors.filter(first_name='Adam')
2.从作者出发获取书籍
- a = Author.objects.get(id=1)
- a.book_set.all()
(二)添加对象方法:
- a = Author.objects.get(id=1)
- b = Book.objects.get(id=50)
- b.authors.add(a)
(三)删除对象对象方法:
- a = Author.objects.get(id=1)
- b = Book.objects.get(id=50)
- b.authors.remove(a) 或者 b.authors.filter(id=1).delete()
转: django数据库操作-增删改查-多对多关系以及一对多(外键)关系的更多相关文章
- django数据库操作-增删改查-多对多关系以及一对多(外键)关系
一.一对多(外键) 例子:一个作者对应多本书,一本书只有一个作者 model代码: class Person(models.Model); name = models.CharField('作者姓名' ...
- Django数据库操作(增删改查)
Django数据库操作(增删改查) 创建数据库中的一个表 class Business(models.Model): #自动创建ID列 caption = models.CharField(max_l ...
- Yii数据库操作增删改查-[增加\查询\更新\删除 AR模式]
在Yii的开发中常常需要去使用Yii的增删改查方法,这些方法又可以多次变化和组合,带来全方位的实现对数据库的处理,下面对这些方法做一些简单的整理和梳理,有遗漏或是BUG,敬请指出.灰常感谢!!! 一. ...
- Android下数据库操作——增删改查
Android下数据库第一种方式增删改查 1.创建一个帮助类的对象,调用getReadableDatabase方法,返回一个SqliteDatebase对象 2.使用SqliteDat ...
- django数据库基本操作-增删改查(tip)-基本
补充:django外键保存 #外键保存 form_data = Form_Data() project, is_created = Project_Name.objects.get_or_create ...
- django数据库的增删改查
正常启动服务安装数据库cmd命令:python manage.py makemigrations 创建用户 在pxm里面会有一个py文件..这就是生成了表结构cmd命令:python manage.p ...
- spring框架学习之--数据库操作增删改查
基于spring的NamedParameterJdbcTemplate操作数据库 首先在 resources 文件夹下添加数据库配置文件jdbc.properties 配置常用的数据库信息 consu ...
- SpringBoot 数据库操作 增删改查
1.pom添加依赖 <!--数据库相关配置--> <dependency> <groupId>org.springframework.boot</groupI ...
- Yii2.0数据库操作增删改查详解
1.简单查询: one(): 根据查询结果返回查询的第一条记录. all(): 根据查询结果返回所有记录. count(): 返回记录的数量. sum(): 返回指定列的总数. average(): ...
随机推荐
- mac下Appium环境配置
一.Appium环境搭建 1.xcode(需要OS X版本支持): 下载对应版本的xcode(支持对应手机系统),解压,拖入应用程序. xcode下载地址:https://developer.appl ...
- Ctrl+Z 暂停程序及重启程序【转】
本文转自:https://blog.csdn.net/duyiwuer2009/article/details/43191799 Ctrl+Z - 暂停进程并放入后台 jobs - 显示当前暂停的进程 ...
- idea开启springboot的devtools自动热部署功能
1.先在pom文件中添加下面代码段 <!-- 热部署 --> <dependency> <groupId>org.springframework.boot</ ...
- SpringMVC下文件的上传与下载以及文件列表的显示
1.配置好SpringMVC环境-----SpringMVC的HelloWorld快速入门! 导入jar包:commons-fileupload-1.3.1.jar和commons-io-2.4.ja ...
- HDU 1159 Common Subsequence 动态规划
2017-08-06 15:41:04 writer:pprp 刚开始学dp,集训的讲的很难,但是还是得自己看,从简单到难,慢慢来(如果哪里有错误欢迎各位大佬指正) 题意如下: 给两个字符串,找到其中 ...
- ScrollView嵌套使用ListView冲突的解决与分析
因为ScrollView与ListView都是具有滚动条的控件,所以嵌套在一起使用的时候可能会出现事件的冲突,比如我就遇见了ListView中只显示一条数据的问题.解决的办法,就是自定义了一个List ...
- crontab 参数详解
crontab 参数 用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下: minute ...
- windows8.1下安装Cygwin并通过apt-cyg安装软件包
参考 http://yuanshuilee.blog.163.com/blog/static/2176972752014126786185/ http://www.cnblogs.com/zhang- ...
- 如何在 CentOS7 中安装 Nodejs
一.安装Nodejs 安装版本:10.13.0 1.安装必要的编译软件包 yum -y install gcc gcc-c++ 2.从源码下载Nodejs cd /usr/local/src wget ...
- jquery attr与prop的区别与联系
最近开发中发现用attr无法设置checkbox的选中事件,在网上找了下说要用prop,所以总结下两者的区别. 1.操作的对象不同 attr:操作的是HTML文档节点属性 prop:操作的是js对象属 ...