转: 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(): ...
随机推荐
- Sybase:delete与truncate、drop区别
Sybase:delete与truncate.drop区别 区别: TRUNCATE TABLE TABLENAME:删除内容.释放空间但不删除定义. DELETE FROM TABLENAME:删除 ...
- 实验四Android开发
实验四Java Android简易开发 实验准备 Android Studio 的下载: Android Studio 安装教程 在安装过程中的问题: 在下载了官网上的说明包含sdk的安装包之后找不到 ...
- React Native Could not expand ZIP
Execution failed for task ':app:prepareSrolkReactNativeFilePickerUnspecifiedLibrary'. Could not expa ...
- Linux下挂载windows的共享文件夹
环境说明: 由于领导要求:现需要将某Linux服务器下的一个文件移动到某windows服务器下(服务器均在机房托管,要远程操作) 由于操作为一次性,则决定在windows下建立一个共享文件夹,linu ...
- 关于 Content-Type:application/x-www-form-urlencoded 和 Content-Type:multipart/related(转)
最近项目中用到的一个是用一个页面接收c程序post过来的一断字符串..总接收不到值... 我用C#写一个测试可以正常接收到值. 最后抓包比较 区别只是 Content-Type:application ...
- Select the JavaScript graphing libraries you would like to compare
Select the JavaScript graphing libraries you would like to compare: Overview Summary Fus ...
- Effective C++ 条款04:确定对象被使用前已经先被初始化
规则一 永远在使用对象之前将它初始化 int x = 0; const char* text = "A C-style string"; double d; std:: cin & ...
- 快速将对象转化为JSON格式
1.导入阿里巴巴fastjson包. <!-- fastJson将对象转化为Json对象 --> <dependency> <groupId>com.alibaba ...
- 【疯狂labview】 Xcontrol+LVoop封装练习 Toolbar
labview没有toolbar,并且没有可复用的 控件 其实项目中很需要 特别是在框架平台的搭建上, 本文以Xcontrol用PICTURE的方式实现toolbar,并用LVoop封装 废话少说 直 ...
- jsp <span>标签自动换行
<span>你好43675373543786375425278687375434537diovfndlbnslvsdlbepsfqwo[ewsbnsdbonfdnb</span> ...