转: 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(): ...
随机推荐
- 如何用纯 CSS 创作一个小球上台阶的动画
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/PBGJwL 可交互视频 ...
- RegExp方法解析
RegExp 正则表达式(regular expression)的缩写 语法: 显式构造函数 var rg= new RegExp(pattern, attributes) 隐式构造函数 var rg ...
- 最简单的CI框架入门示例--数据库取数据
前提: 安装好MySQL,Apache,PHP. 1.下载CI框架 下载地址 http://www.codeigniter.com/ 2.配置 database.php配置: 为数据库服务器设 ...
- 2.scala控制结构、函数、异常处理
2.scala控制结构.函数.异常处理---小书匠,在线编辑器,MARKDOWN,Evernote,文件版本 a:focus { outline: thin dotted #333; outline: ...
- 常见linux系统中RPM包的通用命名规则
本文重点说一下在常见的linux系统中,RPM包通用的命名规则. RPM包的一般格式为:name-version-arch.rpmname-version-arch.src.rpm 例:httpd-2 ...
- bzoj 3884 上帝与集合的正确用法 指数循环节
3884: 上帝与集合的正确用法 Time Limit: 5 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 根据一些 ...
- Google推荐——Glide使用详解(图片加载框架)
零.前言 本文所使用的Glide版本为3.7.0 一.简介 Glide,一个被google所推荐的图片加载库,作者是bumptech.这个库被广泛运用在google的开源项目中,包括2014年的goo ...
- html笔记(1)
hgroup 代替div figure figcaption 独立流内容 替代 dl mark 替代 span
- vs添加静态链接库+添加动态链接库+添加头文件目录
头文件添加方法:工程---属性---配置属性---c/c++---常规---附加包含目录(Additional Include Directories):加上头文件存放目录.注意:(1)路径必须指向头 ...
- spring3: 延迟初始化Bean
3.3.1 延迟初始化Bean 延迟初始化也叫做惰性初始化,指不提前初始化Bean,而是只有在真正使用时才创建及初始化Bean. 配置方式很简单只需在<bean>标签上指定 “lazy- ...