Django filter中contains 用法

时间:2021-6-3 作者:qvyue

用PYTHON ,DJANGO 做站,在通常的情况下,需要用到 orM 的查询方法,比如object.filter(tag__contains=’keywords’)….

在这种情况下,如果你跟踪 sql 语句,你会发现,SQL 语句会生成 select …. like bianry ‘%keywords%’, 如果是这样的语句,在某些情况是下是会出问题的,也就是说查询出来的数据可能会比你预计的少。

如果你用 raw sql 查总数 select count(*) from table where like ‘%keywords%’ 得到数量可能比你用ORM 采用上面的方式得到的数据多,问题就在于生成的条件问题。

后来查询了 django 说明,如果把ORM 语句变成:object.filter(tag__icontains=’keywords’)…. 就好了。

注意contains ,icontains 的区别. 后来从django官网查到了说明:

operators = {  
        'exact': '= %s',  
        'iexact': 'LIKE %s',  
        'contains': 'LIKE BINARY %s',  
        'icontains': 'LIKE %s',  
        'regex': 'REGEXP BINARY %s',  
        'iregex': 'REGEXP %s',  
        'gt': '> %s',  
        'gte': '>= %s',  
        'lt': '
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。