FYI-django数据库操作-外键
一、一对多(外键)
例子:一个作者对应多本书,一本书只有一个作者
model代码:
[python] view plaincopy
- 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.从作者出发获取书籍
[python] view plaincopy
- person = Person.objects.fiter(你的条件)
- book = person.book_set.all()
2.从书籍出发获取作者
[python] view plaincopy
- p = book.person
二、多对多
例子:一个作者对应多本书,一本书有多个作者
model代码:
[python] view plaincopy
- 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.从书籍出发获取作者
[python] view plaincopy
- b = Book.objects.get(id=50)
- b.authors.all()
- b.authors.filter(first_name='Adam')
2.从作者出发获取书籍
[python] view plaincopy
- a = Author.objects.get(id=1)
- a.book_set.all()
(二)添加对象方法:
[python] view plaincopy
- a = Author.objects.get(id=1)
- b = Book.objects.get(id=50)
- b.authors.add(a)
(三)删除对象对象方法:
[python] view plaincopy
- a = Author.objects.get(id=1)
- b = Book.objects.get(id=50)
- b.authors.remove(a) 或者 b.authors.filter(id=1).delete()
转载于:https://www.cnblogs.com/dasydong/p/4409013.html
FYI-django数据库操作-外键相关推荐
- mysql外键设置不成功_MySQL数据库建立外键失败的原因总结
在MySQL数据库创建外键时,经常会发生一些错误,这是一件很令人头疼的事.一个典型的错误就是:Can't create table... 的错误.在很多实例中,这种错误的发生都是因为mysql一直以来 ...
- oracle数据库建立外键级联删除
在给已存在的oracle数据表建立外键时命令为: alter table tablename add constraint FK_NAME foreign key(tablefile) referen ...
- 数据库添加外键报1061错误
今天建数据库添加外键的时候一直报1061的错误,百度了说什么内存不足,后面我发现是约束名冲突,然后修改了约束名就创建索引成功了!
- django不修改数据库创外键_Django——model(建表,增删改查,外键,多对多)
数据库操作 dbfirst:数据库优先 codefirst(ORM):代码优先,sqlalchemy和DJango都是用的这种 创建表 a.在app下的models.py中,创建类 from djan ...
- 56_Django数据库_ORM外键删除操作详解
1. 级联操作 继续用上一节的项目案例,在article下的views.py文件中更新代码: from django.shortcuts import render from .models impo ...
- django不修改数据库创外键_python小项目使用django的数据库模型
有时开发一个小项目并不想启动服务,只是在本地运行,但是又有一些数据存储的需求,打算使用数据库.如果直接采用数据库sql语句接口进行操作显得非常麻烦,而且容易出错.现在比较主流的web框架django的 ...
- Django-- (三) Django数据库操作
1.Django数据库 Django 非常适合构建数据库驱动型网站,它提供了简单而强大的工具(ORM),易于使用 Python 执行数据库查询. 2.ORM介绍 Object Relational M ...
- django数据库操作和中间件
数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...
- 架构师之路 — 数据库设计 — 关系型数据库的外键约束与关联
目录 文章目录 目录 外键约束 外键关联 外键的作用 外键的性能问题 是否使用外键? 使用外键的守则 互联网应用应该尽量避免使用外键 在业务逻辑中模拟数据库外键 on delete/update 的外 ...
- 使用Navicat创建数据库,外键出现错误ERROR 1005: Can't create table (errno: 121)
ERROR 1005: Can't create table (errno: 121) 意思是: 1.表名重复 2.以该名字命名的表之前创建过后来删除了,但是对应的.frm文件还留在磁盘上 3.主键名 ...
最新文章
- 3.Utm详细实现-用户生命流程
- HDU 2573 HDOJ 2573 Typing ACM 2573 IN HDU
- UA MATH574M 统计学习I 监督学习理论下
- M2Crypto/__m2crypto.so: undefined symbol: SSLv3_method
- DIY逗比的时钟,制作资料100%开源!
- 判断字符串中是否为数字的三种方法
- 几个常用的正则表达式
- .NET 将 .config 文件嵌入到程序集
- 潘石屹没跑,他去学 Python 了
- idea oracle 生成实体类,IDEA中maven加入mybatis自动生成代码(ORACLE)
- 第08章-使用Spring Web Flow
- perl语言入门(小骆驼)学习(一)
- linux幻灯片制作工具,PPT2010幻灯片制作实用小技巧
- 如何将图片素材转为矢量图?
- 微信小程序自动化测试——智能化 Monkey
- 将多名学生成绩绘制在一张画布中,并在图中显示学生成绩
- 【Nginx 快速入门】反向代理、负载均衡、动静分离
- 美国国土安全部重点努力加强国家关键基础设施的网络安全
- 世界上最震撼的屏幕保护程序
- 区块链数据共享论文阅读