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

  • 相关阅读:
    tty 与 多任务的解释备忘
    Oracle 安装时候的fs.filemax参数
    100多个Web2.0在线生成器
    精心整理的微软原版光盘
    WEB3.0开启商务魔法时代
    VBO与Displaylists的进一步讨论 (转)
    基于UML和ASP.NET实现三层B/S结构系统开发(转)
    BYTE* To Float*
    COM高手总结的八个经验和教训(转)
    OpenGL: 3D坐标到屏幕坐标的转换逻辑(gluProject的实现)(转)
  • 原文地址:https://www.cnblogs.com/nelsen-chen/p/9544109.html
Copyright © 2020-2023  润新知