一.聚合函数
    from django.db.models import Avg,Sum,Max,Min,Count,F,Q   #导入
    # .查询图书的总价,平均价,最大价,最小价
    # ret=Books.objects.aggregate(Avg('price'),Min('price'),Max('price'),Sum('price'))
    # print(ret)
    二.分组查询:以谁group by 就以谁为基表
    # 查询名字叫lqz作者书的总价格
    # Zuozhe.objects.filter(name='lqz').annotate(c=Sum('books__price')).values('name','c')
    # 查询所有作者写的书的总价格大于30
    # Zuozhe.objects.annotate(c=Sum('books__price')).filter(c__gt=30).values('name','c')
 # Zuozhe.objects.values('pk').annotate(c=Sum('books__price')).filter(c__gt=30).values('name','c')
  终极总结:
     values在前,表示group by,在后,表示取值(默认pk/id 省略)
     filter在前,表示过滤(where),在后,表示having(对分组之后的结果再进行过滤)
     三.F,Q(与& ,或 | ,非 ~)查询
 
    # 查询评论数大于阅读数的书籍名
    # ret=Books.objects.filter(p__gt=F('r')).values('name')
    # print(ret)
    # 把python这本书的阅读数减5
    # Books.objects.filter(name='python').update(r=F('r')-5)
 
    # a.查询作者名字是lqz或者名字是egon的书
    # Books.objects.filter(Q(name='lqz')|Q(name='egon'))
    # b.查询作者不是lqz的书
    # Books.objects.filter(~Q(name='lqz'))
    # Books.objects.exclude(name='lqz')
    # c.构建很复杂的逻辑,需要用括号来区分
    # 查询名字为红楼梦或者价格大于20并且id大于2的书籍
    r1=Books.objects.filter((Q(name='红楼梦')|Q(price__gt=20))&Q(pk__gt=2) ).values('name')
    r2=Books.objects.filter((Q(name='红楼梦')|Q(price__gt=20)),pk__gt=2 ).values('name')
    r3=Books.objects.filter((Q(name='红楼梦')|Q(price__gt=20)),Q(pk__gt=2) ).values('name')
    print(r1)
    print(r2)
    print(r3)
    四.字段类型,字段参数
 #常用字段:必须记住,非常用字段,了解即可https://www.cnblogs.com/liuqingzheng/articles/9627915.html
    # 字段
  常用
  AutoField
  IntegerField
  CharField
  DateField
  DateTimeField
  TextField
  EmailField
  FilePathField
  FileField
  ImageField
  'AutoField': 'integer AUTO_INCREMENT',
  'BigAutoField': 'bigint AUTO_INCREMENT',
  'BinaryField': 'longblob',
  'BooleanField': 'bool',
  'CharField': 'varchar(%(max_length)s)',
  'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',
  'DateField': 'date',
  'DateTimeField': 'datetime',
  'DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)',
  'DurationField': 'bigint',
  'FileField': 'varchar(%(max_length)s)',
  'FilePathField': 'varchar(%(max_length)s)',
  'FloatField': 'double precision',
  'IntegerField': 'integer',
  'BigIntegerField': 'bigint',
  'IPAddressField': 'char(15)',
  'GenericIPAddressField': 'char(39)',
  'NullBooleanField': 'bool',
  'OneToOneField': 'integer',
  'PositiveIntegerField': 'integer UNSIGNED',
  'PositiveSmallIntegerField': 'smallint UNSIGNED',
  'SlugField': 'varchar(%(max_length)s)',
  'SmallIntegerField': 'smallint',
  'TextField': 'longtext',
  'TimeField': 'time',
  'UUIDField': 'char(32)',
 #字段参数
  orm通用字段参数:
  -null  可以为空
  -unique  唯一性约束
  -default 默认值
  -db_index 为该字段建索引
  -只给日期类型和时间类型用
   -auto_now_add    新增数据时,默认把当前时间存入
   -auto_now        修改的时候,默认把当前时间存入
  关系字段
  ForeignKey
   -to  关联哪个表
   -to_field 关联的字段
   -related_name 反向操作时,使用的字段名,用于代替原反向查询时的'表名_set'。(一般不要用)
   -related_query_name :基于双下划线的反向查询之前按表名小写(一般不要用)
   -on_delete:models.CASCADE,models.SET_NULL
   -db_constraint:db_constraint=False代表,不做外键关联

随机推荐

  1. Ubuntu 下使用 putty并通过 ch340 usb 串口线进行调试

    安装putty sudo apt-get install putty -y 插入usb转串口线 由于linux下没有Windos类似的设备管理器,所以我们可以通过其他方法获取对应的串口号 可以在插拔之 ...

  2. sc (service control )

    SC 是用来与服务控制管理器和服务进行通信 net: net start 服务名 net stop 服务名 sc: sc config 服务名 start= demand    //手动 sc con ...

  3. poi读取写入word【未完,待续】

    , [项目实战]Java POI之Word导出经典案例一 Java POI 读取word文件 POI-对于WORD的操作(一)

  4. jenkins检查代码,如没更新停止构建步骤

    需求分析 在jenkins中没有找到构建前插件,每次构建时间很长,希望可以实现判断代码是否更新,如果没更细则停止构建步骤. 实现步骤 在构建时执行shell命令,而jenkins提供的的环境变量可以实 ...

  5. springBoot整合多数据源

    springBoot整合相关 1:springBoot整合多数据源: 应用场景:     项目需要同时连接两个不同的数据库A, B,并且它们都为主从架构,一台写库,多台读库. 工具/版本: jdk1. ...

  6. 使用js弹出div刷新时闪烁解决方法

    <div style="visibility: hidden"> //弹出div内容 </div>

  7. List、Map、set的加载因子,默认初始容量和扩容增量

    首先,这三个概念说下.初始大小,就是创建时可容纳的默认元素个数:加载因子,表示某个阀值,用0~1之间的小数来表示,当已有元素占比达到这个阀值后,底层将进行扩容操作:扩容方式,即指定每次扩容后的大小的规 ...

  8. 基于Android 的蓝牙A2DP 功能的实现

    摘 要:蓝牙(Bluetooth)技术是一种低成本的无线数据与数字通信的开放性全球规范. Android 是Google 于2007 年11 月5 日宣布的基于Linux平台开源手机操作系统名称,该平 ...

  9. HTTP 返回状态码

    一.HTTP 超文本传输协议 HTTP 是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议. 一个HTTP "客户端"是一个应用程 ...

  10. 怎样远程访问 MySQL

    比如我在PC上安装有 phpmyadmin, 图形界面很友好,我的MySQL 在一台Centos 7.5服务器上,很自然的想到用phpmyadmin 去登录linux上的MySQL. 但是折腾了很久也 ...