django的model筛选
名称 | 类型 | 描述 |
---|---|---|
__exact | 精确等于 | like ‘aaa’ |
__iexact | 精确等于 | 忽略大小写 ilike ‘aaa’ |
__contains | 包含 | like ‘%aaa%’ |
__icontains | 包含 | 忽略大小写 ilike ‘%aaa%’ |
__gt | 大于 | |
__gte | 大于等于 | |
__lt | 小于 | |
__lte | 小于等于 | |
__in | 存在于一个list范围内 | |
__startswith | 以…开头 | |
__istartswith | 以…开头 忽略大小写 | |
__endswith | 以…结尾 | |
__iendswith | 以…结尾,忽略大小写 | |
__range | 在…范围内 | |
__year | 日期字段的年份 | |
__month | 日期字段的月份 | |
__day | 日期字段的日 | |
__isnull=True/False | 是否为空 |
# 查询出name以s结尾的数据
model.objects.filter(name__endswith="s")
# 查询方式支持字典类型传入
filter_dict = {"name__endswith": "s"}
model.objects.filter(**filter_dict)
Q 与 F 查询
Q:
| 或 ;& and
# 查询出id等于1或者2的数据
my_filter_or = Q(id=1)|Q(id=2)
model.objects.filter(my_filter_or)
# 查询出id等于1并且name以d开头的数据
my_filter_and = Q(id=1)&Q(name__startswith="d")
model.objects.filter(my_filter_and)
F:
一个动态查询方式
# 查询出字段boy_num大于girl_num的数据
model.filter(boy_num__gt=F('girl_num'))