1.创建一对多:

    1.外键建在多的一方(如:一个出版社可出版多本书,所以建在书的表)

    2.创建表:

    

      1.创建外键

      2.关联的表名

2.一对多数据的操作

  2.1数据的添加:

    第一种方法:

    

    第二种方法:

    

    2.2数据的查询:

    

django 默认每个主表的对象都有一个是外键的属性,可以通过它来查询到所有属于主表的子表的信息

。这个属性的名称默认是以子表的名称小写加上_set()来表示(上面默认以book_set访问),默认返回的是

一个querydict对象。

2.3双下划线查询:

      

        

      1.外键字段的名字

      2.value也可以用双下划线

3.创建多对多:

    

    1.创建多对多关系,后方Author是关联表的名称,

     创建后会出现book_author表(第三张表)

   2.2关联表的添加:

    

    1.通过add方法关联书和作者,括号中内容为作者的对象集合

    2.通过remove可取消关联

       2.3如果想向第三张表插入值得方式绑定关系:手动创建第三张表

# class Book_author(models.Model):
                # book=models.ForeignKey('Book',on_delete=None)
                # author=models.ForeignKey('Author',on_delete=None)

# Book_author.objects.create(book_id='2',author_id='1')

2.4聚合查询:from django.db.models import Avg,Sum,Min,Max

      aggregate:通过对QuerySet进行计算返回一个聚合值字典

求平均值:ret=Book.objects.all().aggregate(返回字典键的名=Avg('price'))

求和:ret=Book.objects.all().aggregate(返回字典键的名=Sum('price'))

2.5F查询和Q查询:

from django.db.models import Q,F

Book.objects.all().update(price=F("price")+10)   F可以取出字段值,price为字段的值

      Book.objects.filter(Q(author__name='xiaoxiao'),Q(name='Mysql')).all()   Q可以多条件查询

Book.objects.filter(Q(author__name='xiaoxiao')|Q(name='Mysql')).all() ,为且|为或~为非

Django之ORM多表操作的更多相关文章

  1. python——Django(ORM连表操作)

    千呼万唤始出来~~~当当当,终于系统讲了django的ORM操作啦!!!这里记录的是django操作数据库表一对多.多对多的表创建及操作.对于操作,我们只记录连表相关的内容,介绍增加数据和查找数据,因 ...

  2. Django之ORM跨表操作

    Django之ORM表查询及添加记录 一.创建表 - 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-man ...

  3. Django(ORM单表操作)

    默认使用sqllite数据库 修改为mysql数据库 创建数据库 在app models中编写创建数据库类 from django.db import models class Book(models ...

  4. Django【第7篇】:Django之ORM跨表操作(聚合查询,分组查询,F和Q查询等)

    django之跨表查询及添加记录 一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many); ...

  5. Django【第6篇】:Django之ORM单表操作(增删改查)

    django之数据库表的单表查询 一.添加表记录 对于单表有两种方式 # 添加数据的两种方式 # 方式一:实例化对象就是一条表记录 Frank_obj = models.Student(name =& ...

  6. Django框架06 /orm多表操作

    Django框架06 /orm多表操作 目录 Django框架06 /orm多表操作 1. admin相关操作 2. 创建模型 3. 增加 4. 删除 5. 修改 6. 基于对象的跨表查询 7. 基于 ...

  7. Django框架05 /orm单表操作

    Django框架05 /orm单表操作 目录 Django框架05 /orm单表操作 1. orm使用流程 2. orm字段 3. orm参数 4. orm单表简单增/删/改 5. orm单表查询 5 ...

  8. day53:django:URL别名/反向解析&URL分发&命名空间&ORM多表操作修改/查询

    目录 1.URL别名&反向解析 2.URL分发&命名空间 3.ORM多表操作-修改 4.ORM多表操作-查询 4.1 基于对象的跨表查询 4.2 基于双下划线的跨表查询 4.3 聚合查 ...

  9. Django ORM 多表操作

    目录 Django ORM 多表操作 表模型 表关系 创建模型 逆向到表模型 插入数据 ORM 添加数据(添加外键) 一对多(外键 ForeignKey) 一对一 (OneToOneFeild) 多对 ...

随机推荐

  1. 一个mdl相关的问题

    感觉挺有意义的,细节问题 http://www.kernelmode.info/forum/viewtopic.php?f=14&t=4318这个人代码到底犯了什么错误 I want to p ...

  2. 论一个X倒下了千千万万个X站起来了

        一个人倒下了,千千万万个人站起来了.起源自革命时期的标语.后来又被应用于各种激励的场景.     这句话在当时环境是好的,但是在无数人应用在不同场景,并且这些场景都不怎么好的时候.人的普遍思维 ...

  3. scull 中的设备注册

    在内部, scull 使用一个 struct scull_dev 类型的结构表示每个设备. 这个结构定义为: struct scull_dev { struct scull_qset *data;  ...

  4. 代码风格JavaScript standard style与Airbnb style

    代码风格JavaScript  standard style与Airbnb style

  5. CentOS6.3搭建ZooKeeper伪集群

    1. 将zookeeper安装包移动至/home, 解压后改名为zookeeper 相关命令 # 解压 .tar.gz # 重命名 zookeeper 2. 进入zookeeper/conf/目录下, ...

  6. python 递归计算若干工作日后的日期

    import datetime # 根据第一次计算出来的休息日数,计算还需要的工作日数.(递归调用) def get_next_date(self, start_date, weekend_days) ...

  7. LUOGU P2764 最小路径覆盖问题 (最小路径点覆盖)

    解题思路 有向图最小路径点覆盖问题,有这样的结论就是有向图最小路径点覆盖等于n-拆点二分图中最大匹配.具体怎么证明不太知道..输出方案时找到所有左部未匹配的点一直走$match​$就行了. #incl ...

  8. 33 N皇后问题

    原题网址:https://www.lintcode.com/zh-cn/old/problem/n-queens/# n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击. 给定一个整 ...

  9. 为什么说 Python 是数据科学的发动机(一)发展历程(附视频中字)

    为什么说 Python 是数据科学的发动机(一)发展历程(附视频中字) 在PyData Seattle 2017中,Jake Vanderplas介绍了Python的发展历程以及最新动态.在这里我们把 ...

  10. jquery 判断当前设备是PC端还是移动端

    $(function(){ var system = { win: false, mac: false, xll: false, ipad:false }; //检测平台 var p = naviga ...