Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 xxx 八 xxx 一 创建模型 表和表之间的关系 一对一.多对一.多对多 ,用book表和publish表自己来想想关系,想想里面的操作,加外键约束和不加外键约束的区别,一对一的外键约束是在一对多的约束上加上唯一约束. 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄.…
一.聚合查询与分组查询(很重要!!!) 聚合查询:aggregate(*args, **kwargs),只对一个组进行聚合 from django.db.models import Avg,Sum,Count,Max,Min # 1.查询所有图书的平均价格 print(models.Book.objects.all().aggregate(Avg("price"))) aggregate()是QuerySet 的一个终止子句(也就是返回的不再是一个QuerySet集合的时候),意思是说…
django之跨表查询及添加记录 一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);     一本书只应该由一个出版商出版,所以出版商和书籍是一对多关联关系(one-to-many). 创建一对一的关系:OneToOne("要绑定关系的表名") 创建一对多的关系:ForeignKey("要绑定关系的表名") 创建多对多的关系:ManyToMany(&qu…
目录 多表操作:增删改,基于对象/双下划线的跨表查询.聚合查询.分组查询.F查询与Q查询 一.创建多表模型 二.一对多增删改表记录 1.一对多添加记录 2.一对多删除记录 3.一对多修改记录 三.一对一增删改记录 四.多对多增删改记录 1.多对多增加记录 2.多对多删除记录 3.多对多清空记录 4.多对多修改记录 五.基于对象的跨表查询--多次查询.子查询 正向查询和反向查询 1.一对一基于对象的跨表查询 2.一对多基于对象的跨表查询 3.多对多基于对象的跨表查询 六.基于双下划线的跨表查询 1…
一.ForeignKey操作 正向查找 对象查找(跨表) 语法: 对象.关联字段.字段   示例: book_obj = models.Book.objects.first() # 第一本书对象 print(book_obj.publisher) # 得到这本书关联的出版社对象 print(book_obj.publisher.name) # 得到出版社对象的名称 字段查找(跨表) 语法: 关联字段__字段 示例: print(models.Book.objects.values_list("p…
摘要: 单表查询 多表查询 聚合查询 分组查询 一.Django ORM 常用字段和参数: 常用字段:#AutoFieldint自增列,必须填入参数primary_key = True,当model中如果没有自增列,则会自动创建一个列名为id的列#IntegerField一个整数类型,范围在--2147483648 to 2147483647.(一般不用它来存手机号(位数也不够),直接用字符串存)#CharField字符类型,必须提供max_length参数,max_length表示字符长度Ti…
Django基础四之测试环境和ORM查询 目录 Django基础四之测试环境和ORM查询 1. 搭建测试环境 1.1 测试环境搭建方法: 1.2 使用测试环境对数据库进行CURD 1.3 返回QuerySet对象的方法 1.4 返回具体对象的方法 1.5 返回布尔值的方法 1.6 返回数字的方法 1.7 范围查找(双下划线查询) 1.8 外键字段操作 2. 跨表查询 2.1 正向查询和反向查询 2.2 基于对于的跨表查询(子查询) 2.3 双下划线跨表查询(连表查询) 3. 聚合查询 4. F查…
Django-model聚合查询与分组查询 聚合函数包含:SUM AVG MIN MAX COUNT 聚合函数可以单独使用,不一定要和分组配合使用:不过聚合函数一般和group by 搭配使用 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典. 分组查询 annotate 查询出来的结果任然是集合是QuerySet类型; annotate对获取的集合进行分组,按照集合的个数分组: 聚合查询的使用aggregate()来调用 1.查询所有书籍的总价…
ORM操作 https://www.cnblogs.com/maple-shaw/articles/9403501.html 一.一般操作 1. 必知必会13条 <1> all(): 查询所有结果 <2> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误. <3> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <4> exclude(**kwarg…
一.聚合查询和分组查询 1.aggregate(*args, **kwargs): 通过对QuerySet进行计算,返回一个聚合值的字典.aggregate()中每个参数都指定一个包含在字典中的返回值.即在查询集上生成聚合. from django.db.models import Avg,Min,Sum,Max # 从整个查询集生成统计值.比如,你想要计算所有在售书的平均价钱.Django的查询语法提供了一种方式描述所有图书的集合. Book.objects.all().aggregate(A…