数据查询中万能的下划线基本用法:

         __contains: 包含
__icontains: 包含(忽略大小写)
__startswith: 以什么开头
__istartswith: 以什么开头(忽略大小写)
__endswith
__iendswith
__gt: 大于
__gte: 大于等于
__lt: 小于
__lte: 小于等于
__rang: 范围
models.Book.objects.filter(pub_date__range=('2015-01-01','2016-01-01'))
__isnull: 判断是否为空
__regex: 正则匹配
Entry.objects.get(title_regex=r'^(An|The) +')
__regex: 不区分大小写的正则匹配
Entry.objects.get(title_regex=r'^(an|the) +')
models.Book.objects.exclude(price=None):反查询

聚合:

         from django.db.models import Avg,Max,Mix,Sum,Count
Book.objects.all().aggregate(Avg('price')
models.Book.objects.values('publisher__name').annotate(Count('id'))
models.Book.objects.values('publisher__name').annotate(Avg('price'))
models.Book.objects.filter(name_contains='J',pub_date__year='2016')

Q 语句:

默认是AND

>>> from django.db.models import Q

>>> Q(put_date__year = '2016')

<Q: (AND: ('put_date__year', '2016'))>

AND

>>> Q(put_date__year =2016) , Q(put_date__year=2018)

(<Q: (AND: ('put_date__year', 2016))>, <Q: (AND: ('put_date__year', 2018))>)

加个| 为or的意思

>>> Q(put_date__year =2016)|Q(put_date__year=2018)

<Q: (OR: ('put_date__year', 2016), ('put_date__year', 2018))>

~ 为取非

>>> Q(put_date__year =2016)| ~ Q(put_date__year=2018)

<Q: (OR: ('put_date__year', 2016), (NOT (AND: ('put_date__year', 2018))))>

AND和OR

>>> Q(put_date__year =2016) , Q(put_date__year=2018)| Q(put_date__year=2019)

(<Q: (AND: ('put_date__year', 2016))>, <Q: (OR: ('put_date__year', 2018), ('put_date__year', 2019))>)

在生成条件语句后利用filter来进行查询

q = Q(put_date__year =2016)|Q(put_date__year=2018)

models.Book.objects.filter(q)

  

from django.db.models import Q    # 导入Q
con = Q() # 创建Q对象 q1 = Q()
q1.connector = 'OR' # q1的元素为OR或的关系
q1.children.append(('id', 1))
q1.children.append(('id', 10))
q1.children.append(('id', 9)) q2 = Q()
q2.connector = 'OR' # q2的元素为OR或的关系
q2.children.append(('c1', 1))
q2.children.append(('c1', 10))
q2.children.append(('c1', 9)) con.add(q1, 'AND') # 将q1添加到con对象中,与其他的Q为且的关系
con.add(q2, 'AND') models.Tb1.objects.filter(con) #将总的Q对象添加到model的查找条件中

  

F 语句:

自修改

本表内两个字段比较

字段数据迁移

from django.db.models impport F

1.先查看所有的商品价格

models.Book.objects.values('price')

2.所有商品价格+10

models.Book.objects.update(price=F('price')+10)

# 本表内两个字段比较

models.Book.objects.filter(num1__get= F('num2'))  # 仅仅为例子

# 表内字段数据迁移

1.memo字段默认为空,把memo字段设为为同表中的name字段的值

models.Book.objects.update(memo=F('name'))

2.models.Book.objects.values('memo,name')

Django中数据查询(万能下换线,聚合,F,Q)的更多相关文章

  1. JavaWeb_(Hibernate框架)Hibernate中数据查询语句SQL基本用法

    本文展示三种在Hibernate中使用SQL语句进行数据查询基本用法 1.基本查询 2.条件查询 3.分页查询 package com.Gary.dao; import java.util.List; ...

  2. JavaWeb_(Hibernate框架)Hibernate中数据查询语句Criteria基本用法

    Criteria进行数据查询与HQL和SQL的区别是Criteria完全是面向对象的方式在进行数据查询,将不再看到有sql语句的痕迹,使用Criteria 查询数据包括以下步骤: 1. 通过sessi ...

  3. 分组\聚合\F\Q查询

    一.分组和聚合查询 1.aggregate(*args,**kwargs)  聚合函数 通过对QuerySet进行计算,返回一个聚合值的字典.aggregate()中每一个参数都指定一个包含在字典中的 ...

  4. django orm 数据查询详解

    一 在django里面创建模型 from django.db import models class Blog(models.Model): name = models.CharField(max_l ...

  5. django对数据查询结果进行排序的方法

    在你的 Django 应用中,你或许希望根据某字段的值对检索结果排序,比如说,按字母顺序. 那么,使用 order_by() 这个方法就可以搞定了. ? 1 2 >>> Publis ...

  6. Mysql对表中 数据 查询的操作 DQL

    准备数据,倒入sql文件 运行sql文件 得到四张表 select * from 表名  * 代表全部 1.AS子句作为别名 select studentname as "姓名" ...

  7. JavaWeb_(Hibernate框架)Hibernate中数据查询语句HQL基本用法

    HQL(Hibernate Query Language) 是面向对象的查询语言, 它和 SQL 查询语言有些相似. 在 Hibernate 提供的各种检索方式中, HQL 是使用最广的一种检索方式. ...

  8. SQL Server 中数据查询注意事项

    1.查询语句不用区分大小写,而且即使每张表的表名或者列名出现大写字母,在写查询语句的时候也不用区分大小写,查询结果保持一致,所以查询语句小写即可. 2.在写查询语句的时候列名不需要带单引号,数值型的字 ...

  9. 系统的了解DJANGO中数据MODULES的相关性引用

    数据库结构如下: from django.db import models class Blog(models.Model): name = models.CharField(max_length=1 ...

随机推荐

  1. 函数式编程之foldLeftViaFoldRight

    问题来自 Scala 函数式编程 一书的习题, 让我很困扰, 感觉函数式编程有点神学的感觉.后面看懂之后, 又觉得函数式编程所提供的高阶抽象是多么的强大. 这个问题让我发呆了好久, 现在把自己形成的想 ...

  2. HTML5 拖放(Drag 和 Drop)详解与实例(转)

    公司要开一个技术分享会,给我们出了几个简单的题去实现,其中有如何实现表格中列之间的拖拽,我知道html5中有个新方法可以实现,但是没有认真学习,现在闲了去学学,发现关于drag和drop的文章有很多, ...

  3. Python爬虫之urllib模块1

    Python爬虫之urllib模块1 本文来自网友投稿.作者PG,一个待毕业待就业二流大学生.玄魂工作室未对该文章内容做任何改变. 因为本人一直对推理悬疑比较感兴趣,所以这次爬取的网站也是平时看一些悬 ...

  4. Mybatis的mapper代理开发dao方法

    看完了之前的mybatis原始的dao开发方法是不是觉得有点笨重,甚至说没有发挥mybatis 作为一个框架的优势.总结了一下,原始的dao方法有以下几点不足之处 dao接口实现方法中存在大量的模板方 ...

  5. 开源软件:NoSql数据库 - 图数据库 Cassandra

    转载原文:http://www.cnblogs.com/loveis715/p/5299495.html Cassandra简介 在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了 ...

  6. 用js来实现那些数据结构(数组篇02)

    上一篇文章简单的介绍了一下js的类型,以及数组的增删方法.这一篇文章,我们一起来看看数组还有哪些用法,以及在实际工作中我们可以用这些方法来做些什么.由于其中有部分内容并不常用,所以我尽量缩小篇幅.在这 ...

  7. 项目管理器 ProjectManager Beta 10 发布

    本次更新内容: 可以设置主界面是否显示表格线 去除了开发日志界面的表格线,看起来好像好看一些 修复主界面时间显示的问题 自定义问候语 修复习惯统计记录时间显示错误的问题 修复创建项目时间错误问题 增加 ...

  8. jq中的表单验证插件------jquery.validate

    今天我们来说一下表单验证,有人说我们在进行表单验证的时候使用正则来验证是非常麻烦的,现在我来给大家介绍一下表单验证的插件:jquery.validate.min.js 它是与jquery一起结合用来使 ...

  9. Java:Linux上java -jar xxx.jar命令执行jar包时出现Error: Invalid or corrupt jarfile xxx.jar解决方案

    背景: 从ftp上上传jar包到linux上,之后在linux上通过ftp命令下载jar包文件,开始执行Java-jar,一直提示错误:Error: Invalid or corrupt jarfil ...

  10. Flume(一):简介架构

    Flume架构以及应用介绍 Spark Streaming:http://blog.csdn.net/jianghuxiaojin/article/details/51452593 生产者消费者模式: ...