版权归作者所有,任何形式转载请联系作者。
作者:petanne(来自豆瓣)
来源:https://www.douban.com/note/301166150/
 
1.多表连接查询:感觉django太NX了。
  class A(models.Model):
    name = models.CharField(u'名称')
  class B(models.Model):
    aa = models.ForeignKey(A)
B.objects.filter(aa__name__contains='searchtitle')

1.5 反向查询,补上记录1.5,感觉django太太太NX了。
  class A(models.Model):
    name = models.CharField(u'名称')
  class B(models.Model):
    aa = models.ForeignKey(A,related_name="FAN")
    bb = models.CharField(u'名称')
  查A: A.objects.filter(FAN__bb='XXXX'),都知道related_name的作用,A.FAN.all()是一组以A为外键的B实例,可前面这样的用法是查询出所有(B.aa=A且B.bb=XXXX)的A实例,然后还可以通过__各种关系查找,很好用!!!

2.条件选取querySet的时候,filter表示=,exclude表示!=。
querySet.distinct() 去重复
__exact 精确等于 like 'aaa'
 __iexact 精确等于 忽略大小写 ilike 'aaa'
 __contains 包含 like '%aaa%'
 __icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以...开头
__istartswith 以...开头 忽略大小写
__endswith 以...结尾
__iendswith 以...结尾,忽略大小写
__range 在...范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False

例子:
>> q1 = Entry.objects.filter(headline__startswith="What")
>> q2 = q1.exclude(pub_date__gte=datetime.date.today())
>> q3 = q1.filter(pub_date__gte=datetime.date.today())
>>> q = q.filter(pub_date__lte=datetime.date.today())
>>> q = q.exclude(body_text__icontains="food")

即q1.filter(pub_date__gte=datetime.date.today())表示为时间>=now,q1.exclude(pub_date__gte=datetime.date.today())表示为<=now

2013/12/12补充:
“在django models中取得一个字段的distinct值”。就是select distinct xxx from table_name ...这样的功能。使用values会生成ValuesQuerySet(形如N个dict组成的list),猜测大数据无额外性能影响,毕竟queryset系列都是使用时才查询操作的。
xxxx.objects.values("field_name").distinct()
#或者
xxxx.objects.distinct().values("field_name")
这两句生成的sql语句相同,原帖地址:http://blog.csdn.net/tsbob/article/details/1340293。

关于缓存:
queryset是有缓存的,a = A.objects.all(),print [i for i in a].第一次执行打印会查询数据库,然后结果会被保存在queryset内置的cache中,再执行print的时候就会取自缓存。
很多时候会遇到仅需判断queryset是否为空的情况,可以1. if queryset:pass 2.if queryset.count>0:pass 3.if queryset.exists():pass. 三种方式性能依次提升。
当queryset非常巨大时,cache会成为问题。此时可以queryset.iterator(),迭代器的用处就不多说了,根据具体需求情况使用。

Django 查询很经典的相关推荐

  1. oracle对sga统计信息不对,关于oracle sga设置的总结,很经典--转

    关于oracle sga设置的总结,很经典--转 说明: 本总结不针对特例,仅对服务器只存在OS + ORACLE 为例,如果存在其他应用请酌情考虑.写这个也是因为近来这种重复性的问题发生的太多所导致 ...

  2. 怎么在php分页上结束分页,很经典的分页程序,该如何处理

    当前位置:我的异常网» PHP » 很经典的分页程序,该如何处理 很经典的分页程序,该如何处理 www.myexceptions.net  网友分享于:2013-02-10  浏览:5次 很经典的分页 ...

  3. 2022-10-24 ClickHouse 源码解析-查询引擎经典理论

    ClickHouse 源码解析: 综述 ClickHouse 源码解析: MergeTree Write-Path ClickHouse 源码解析: MergeTree Read-Path Click ...

  4. 世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?

    来自公众号:五分钟学算法 今天分享四个代码量很少,但很牛逼很经典的算法或项目案例. 1.no code 项目地址: https://github.com/kelseyhightower/nocode ...

  5. MySQL Sending data导致查询很慢的问题详细分析

    这两天帮忙定位一个MySQL查询很慢的问题,定位过程综合各种方法.理论.工具,很有代表性,分享给大家作为新年礼物:) [问题现象] 使用sphinx支持倒排索引,但sphinx从mysql查询源数据的 ...

  6. Redis 怎么实现保存Django 查询集

    我们在用Python Django开发秒杀系统的时候,要将Django 查询到商品详细信息保存到Redis缓存中去,但Redis不能直接保存对象,但有什么方法呢? 我们发现可用Python的pickl ...

  7. django学习之路(五)站点管理admin - django - 一直很安静 - Powered by Discuz!

    django学习之路(五)站点管理admin - django - 一直很安静 - Powered by Discuz!: "" (Via.) 转载于:https://www.cn ...

  8. 微软的面试题(超变态但是很经典)

    微软的面试题(超变态但是很经典) <点击揭晓答案> 第一组 1.烧一根不均匀的绳,从头烧到尾总共需要1个小时.现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢? 2. ...

  9. Django查询 – id vs pk

    当编写django查询时,可以使用id / pk作为查询参数. Object.objects.get(id=1) Object.objects.get(pk=1) pk代表主键(primary key ...

最新文章

  1. 文巾解题 176. 第二高的薪水
  2. SAP修改消息内容和报错类型(SE91和OBA5)
  3. php移除所有子节点,PHP 循环删除无限分类子节点的实现代码
  4. 64位进程和32位进程通信问题,接收端收不到 SendMessage发送的消息
  5. Hibernate-HQL基础
  6. 通过Mybatis获取mysql表中重复记录的方法
  7. MySQL多表关联查询与存储过程
  8. CTP: 为什么报网络原因发送失败,但连接却成功?
  9. Java 8实战-Stream 查找替换 VS 归约reduce
  10. 使用格式工厂将H264文件转成mp4文件
  11. 基于H5的移动端APP开发框架
  12. 三角函数 sinx, cosx 的泰勒展开推导及两个巧妙应用
  13. 解决更新pip后报错 Cannot open pip-script.py
  14. java kafka设置偏移量_kafka实战宝典:手动修改消费偏移量的两种方式
  15. 40网桥的基本概念及其原理
  16. python的第三方库汇总
  17. 扫雷游戏开发基本思路
  18. mysql中的describe语法详解
  19. 计算机清理垃圾文件丢失怎么恢复,垃圾箱清空了怎么恢复
  20. Redis学习7之Predis连接redis过程和测试

热门文章

  1. 车联网技术对中老年人吸引力更大
  2. DHCP之一 DHCP的部署安装
  3. OMG!我居然把新首页设计出来了!
  4. utf8 连接 mysql_mysql配置为支持utf8的连接方式只要改client就可以了吗
  5. Python要了解哪些编程基础 如何学Python比较好
  6. docker初体验:docker部署nginx服务
  7. SQL性能优化之索引优化法
  8. 实战讲解Python函数参数
  9. linux c sql server 存储过程,SQL Server 2016 - 本机编译的函数
  10. js实现审批流_超实用的工作流,小白用户也能轻松驾驭