Django-数据库过滤器filter

在做django项目时,难免会需要对数据库中的数据进行筛选,django有自己的数据库过滤语法。

1
users = User.objects.filter()

其中有多种参数:

  • __contains :包含, like ‘%aaa%’; __icontains :包含( 忽略大小写) ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于 icontains
  • __exact :精确等于, like ‘aaa’ ;iexact 精确等于(忽略大小写) ilike ‘aaa’
  • __gt 大于
  • __gte 大于等于
  • __lt 小于
  • __lte 小于等于
  • __in 存在于一个list范围内
  • __startswith 以…开头
  • __istartswith 以…开头 忽略大小写
  • __endswith 以…结尾
  • __iendswith 以…结尾,忽略大小写
  • __range 在…范围内
  • __year 日期字段的年份
  • __month 日期字段的月份
  • __day 日期字段的日
  • __isnull=True/False 空查询

“Q() |” 或 ;“&”与(逗号效果一样) ; “~”非(不等于)

1
2
3
from django.db.models imports Q

XXX.objects.filter(Q(id__gt=3)|Q(bread__gt=2))