当前位置: 首页 > news >正文

Django之ORM多表操作

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() ,为且|为或~为非

 

转载于:https://www.cnblogs.com/lixiaoting/p/10115858.html

相关文章:

  • Dilated/Atrous conv 空洞卷积/多孔卷积
  • PHP 用户登录与退出
  • Java之线程池深度剖析
  • POCO浅探
  • Dataset+TableAdapter _.net最终数据访问类出现? 我的心血显然被藐视了
  • Scrum实施日记 - 我可以问问题吗?
  • Design Patterns
  • 手机端雅安地震寻人整合项目
  • 香港身份证
  • UDDI(一)
  • 浅谈 XSS CSRF(转)
  • ansible笔记(2):管理清单配置详解
  • VS2015 Web应用程序发布
  • 《Java核心技术卷一》之 泛型
  • emacs 窗口控制
  • [PHP内核探索]PHP中的哈希表
  • [NodeJS] 关于Buffer
  • C++类中的特殊成员函数
  • docker python 配置
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • js面向对象
  • leetcode讲解--894. All Possible Full Binary Trees
  • Lsb图片隐写
  • PAT A1050
  • React-生命周期杂记
  • sessionStorage和localStorage
  • WePY 在小程序性能调优上做出的探究
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 大数据与云计算学习:数据分析(二)
  • 力扣(LeetCode)965
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 什么软件可以剪辑音乐?
  • 用mpvue开发微信小程序
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 容器镜像
  • ###项目技术发展史
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (2)(2.10) LTM telemetry
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (二)linux使用docker容器运行mysql
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (九十四)函数和二维数组
  • (力扣)循环队列的实现与详解(C语言)
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (实战篇)如何缓存数据
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .aanva
  • .Net 4.0并行库实用性演练
  • .NET Micro Framework初体验
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [<MySQL优化总结>]