• 062:ORM查询条件详解-exact和iexact


    查询操作:

    查找是数据库操作中一个非常重要的技术。查询一般就是使用filter、exclude以及get三个方法来实现。我们可以在调用这些方法的时候传递不同的参数来实现查询需求。在 ORM 层面,这些查询条件都是使用 field + __ + condition 的方式来使用的。以下将那些常用的查询条件来一一解释。

    查询条件exact和iexact:

    exact:

    使用精确的 = 进行查找。如果提供的是一个 None ,那么在 SQL 层面就是被解释为 NULL 。示例
    代码如下:

    article = Article.objects.get(id__exact=14)       #等价与: article = Article.objects.get(id=14)
    article = Article.objects.get(id__exact=None)

    以上的两个查找在翻译为 SQL 语句为如下:

    select ... from article where id=14;
    select ... from article where id IS NULL;

    iexact:

    使用 like 进行查找。示例代码如下:

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

    那么以上的查询就等价于以下的 SQL 语句:

    select ... from article where title like 'hello world';

    注意:上面这个sql语句,因为在MySQL中,没有一个叫做ilike的,所以iexact和exact的区别实际上就是LIKE和=的区别,而且,field__exact=***其实就是“field=***”,在大部分collation=utf8_general_ci 情况下都是一样的( collation 是用来对字符串比较的)。因此,实际开发中使用exact和iexact很少,直接使用:field=*** 即可。

    实例截图如下:

  • 相关阅读:
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    团 队 作 业 ———— 随 堂 小 测
    Alpha 冲刺 (5/10)
    Alpha 冲刺 (4/10)
    Beta冲刺博客汇总(麻瓜制造者)
    Beta冲刺(3/5)(麻瓜制造者)
    快速搭建一个Express工程骨架
    个人作业——软件产品案例分析
  • 原文地址:https://www.cnblogs.com/zheng-weimin/p/10229185.html
Copyright © 2020-2023  润新知