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’没有百分号,那么意味着只要完全相等的时候才会被匹配到

原文地址:https://www.cnblogs.com/nelsen-chen/p/9544109.html

时间: 2024-11-07 23:22:59

Django 第十课 4.【ORM查询操作】的相关文章

Django orm查询操作

基于双下划线查询切记!!!!正向查询按字段,反向查询按表名的小写 正向:在Book表里设置关联Obj表,Book------>Obj就是正向查询 反向:在Book表里设置关联Obj表,Obj------>Book就是反向查询 废话不多说,直接上例子: 数据 class Book(models.Model): nid=models.AutoField(primary_key=True) title=models.CharField(max_length=32) price=models.Deci

Django 第十课 3.【ORM表关系】

#表关系 ## 一对多: 1:应用场景:比如文章和作者之间的关系.一个文章只能由一个作者编写,但是一个作者可以写多篇文章.文章和作者之间的关系就是典型的多对一的关系. 2:实现方式:一对多或者多对一,都是通过 'ForeignKey' 来实现的.还是以文章和作者的案例进行讲解. class User(models.Model): username = models.CharField(max_length=20) password = models.CharField(max_length=10

Django进阶Model篇004 - ORM常用操作

一.增加 create和save方法 实例: 1.增加一条作者记录 >>> from hello.models import * >>> Author.objects.create(name='胡大海') >>> AuthorDetail.objects.create(sex=False,email='[email protected]',address='北京XX',birthday='1988-1-2',author_id=1) 2.增加一条出版社

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

作业描述] 1.cluster的故障转移操作,截图展示 2.部署codis,并写代码访问codis ==================================================   一.系统环境 二.cluster集群的故障转移 ##集群的故障转移前提是集群复制,复制原理和单节点的主从复制一样. ##从节点也要运行在集群模式下,通过cluster meet命令将从节点添加到集群环境: ##在即将成为从节点的节点命令行执行cluster replicate <node-id

django知识之ORM查询

1. ORM字段 1. AutoField(primary_key=True)      -------->自增且主键 2. CharField(max_length=16)         --------->varchar类型(char类型可以自定义 类改写db_type) 3. IntegerField(null=True) --> 最大10位    -------->int类型(最大10位所以手机号码一般用char或者varchar类型) 4. DateField(auto

Django中的ORM进阶操作

Django中的ORM进阶操作 Django中是通过ORM来操作数据库的,通过ORM可以很easy的实现与数据库的交互.但是仍然有几种操作是非常绕也特别容易混淆的.于是,针对这一块,来一个分类总结吧. 对于ORM对数据库的基本操作前面model里已经有了介绍,这里专门针对ORM的一对多.多对多.正向.反向等操作来讲解用法和注意事项. 铭记于心的两条: 在联表操作过滤查找数据时用双下划线 "__" 在取数据时用点 "." 一.一对多 首先来设计两张简单的表格,并在其中

django指定mysql数据库 ORM查询

django原生自带数据库,不过自带的数据库是sqlite 这次使用的orm框架操作数据库 这时候你就需要换上你想用的数据库比如大众化的mysql 但是你还是首先要先安装pymysql的驱动 pip install PyMySQL 在Django的工程同名子目录的__init__.py文件中添加如下语句 from pymysql import install_as_MySQLdb install_as_MySQLdb()django 在python2.7一直使用的是db操作数据库由于django

Django 框架篇(五): ORM详细操作

 ORM之models.py  字段: 常用字段 : AutoField: 自增的整形字段,必填参数primary_key=True,则成为数据库的主键.无该字段时,django自动创建. 一个model不能有两个AutoField字段. IntegerField: 一个整数类型.数值的范围是 -2147483648 ~ 2147483647. CharField: 字符类型,必须提供max_length参数.max_length表示字符的长度. DateField: 日期类型,日期格式为YYY

django模型层 、 ORM查询

模型层 ORM查询 单表查询 前期准备工作需求: 如何只单独测试django中的某一个py文件 如何书写测试脚本 如何使用: 在任意一个py文件中书写以下代码 应用下的tests 或者自己新建一个 import os if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day53.settings") import django django.se