Django 第十课 4.ORM查询操作

Posted nelsen-chen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django 第十课 4.ORM查询操作相关的知识,希望对你有一定的参考价值。

#查询

1:exact:在底层会被翻译成 ‘=’

article = Article.objects.filter(title__exact=hello)

2:iexact:在底层被翻译成 ‘LIKE’

article = Article.objects.filter(title__iexact=hello)

 

* LIKE 和 = :大部分情况下都是等价的,只有少数情况下是不等价的。

* exact和iexact:他们的区别其实就是LIKE和=的区别,因为exact会被翻译成=,而iexact会被翻译LIKE

* 因为 ‘field_exact=xxx’ 其实等价于 ‘field=xxx’,因此我们直接使用 ‘field=xxx’就可以了,并且因为大部分情况 ‘exact’和‘iexact’又是等价的,因为我们以后直接使用 ‘field=xxx’就可以了

 

3: QuerySet.query: ‘query‘ 可以用来查看合格‘ORM’查询语句最终被翻译成的SQL语句。但是‘query’只能被用在 ‘QuerySet’ 对象上,不能用在普通的‘ORM模型’上。因此如果你得查询语句是通过‘get’来获取数据的,那么就不能使用‘query’,因为‘get’返回的是满足条件的‘ORM’模型,而不是‘QuerySet’。如果你是通过‘filter’等其他返回 ‘QuerySet’的方法查询的,那么就可以使用‘query’

 

4: contains: 使用大小写敏感的判断,某个字符串是否在指定的字段中。这个判断条件会使用大小写敏感,因此在被翻译成 ‘SQL’语句的时候,会使用‘like binary’,而‘like binary’就是使用大小写敏感的

 

5:icontains:使用大小写不敏感的判断,某个字符串是否被包含在指定的字段中。这个查询语句在被翻译成‘SQL’的时候,使用的是‘like’,而‘like’在‘mysql’层面就是不区分大小写的。

 

6:contains和icontain:在被翻译成‘SQL’的时候使用的是 ‘%like%’,就是只要整个字符串中出现‘hello’都能过够被找到,而‘iexact’没有百分号,那么意味着只要完全相等的时候才会被匹配到

 

以上是关于Django 第十课 4.ORM查询操作的主要内容,如果未能解决你的问题,请参考以下文章

Django 第十课 1.ORM模型

Django 第十课 3.ORM表关系

第十课——cluster故障转移操作,codis部署

Python学习第十课——文件的基本操作

第十课 实模式到保护模式 上

第十课初探Qt的消息处理