zoukankan      html  css  js  c++  java
  • python测试开发django170.ORM查询之contains和icontains 上海

    前言

    平常用ORM大部分使用的是get、filter、exclude这三种能满足基本的需求,有时我们需要满足一些复杂的查询场景,在页面上传不同参数满足查询需求。
    ORM 条件查询使用field__结合 condition 的方式来使用的,比如查询包含指定的字符,可以用contains和icontains。

    contains和icontains 区别

    比如有下面这张表

    MyDjango>python manage.py shell
    >>> Product.objects.filter(name__contains='yy')
    <QuerySet [<Product: Product object (2)>, <Product: Product object (3)>]>
    >>> Product.objects.filter(name__icontains='yy')
    <QuerySet [<Product: Product object (2)>, <Product: Product object (3)>, <Product: Product object (4)>]>
    >>>
    

    contains表示精确大小写,icontains中的i表示忽略大小写

    • filter(name__contains='yy') 是查询name包含小写的yy的内容
    • filter(name__icontains='yy')是查询name包含yy的字符,不区分大小写

    对应SQL语句

    SQL 查询like 后面带上 BINARY 就是精确大小写查询

    • name__contains='yy' 对应sql语句 where name like BINARY '%yy%'
    • name__icontains='yy' 对应SQL 语句 where name like '%yy%'
    /* BINARY精确大小写yy */
    select * from yoyo_product where name like BINARY '%yy%';
    
    /* 忽略大小写yy */
    select * from yoyo_product where name like '%yy%'; 
    
  • 相关阅读:
    Samba 基础搭建
    HBuilder 打包流程和遇到的坑
    js 字符串查找相同字母最长子串
    web前端简单的H5本地存储
    rem响应式JS
    JS洗牌算法
    Js 常用正则表达式
    JS_DOM_鼠标、键盘事件合集
    SE 2014年4月3日
    SE 2014年4月2日
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/15528656.html
Copyright © 2011-2022 走看看