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

  • 相关阅读:
    android 7.0带来的
    转 android 侧滑实现
    (转)30道面试题
    【转】关于手机号注册的一些思考
    一个美国人对"智能制造"的思考!
    【转】社区O2O的增量与存量,机会在哪?
    【转】30岁之前打好基础,无惧职场“35岁现象”! | 人力资源心理学
    Linux 复制、移动覆盖文件不提示
    使用DDMS测试安卓手机APP的性能(android)
    【转】测试思考——测试人员需要具备哪些素质?
  • 原文地址:https://www.cnblogs.com/nelsen-chen/p/9544109.html
Copyright © 2011-2022 走看看