使用django的模型类来实现sql中的where操作常用下面三个方法:
- filter 返回一个根据指定参数查询出来的QuerySet
- exclude 除了根据指定参数查询出来结果的QuerySet
- get 过滤单一结果
过滤条件的表达语法如下:
属性名称__比较运算符=值
# 属性名称和比较运算符间使用两个下划线,所以属性名不能包括多个下划线
比较运算符
- exact:表示判等 不过常用 = 代替
- contains:是否包含。
- 说明:如果要包含%无需转义,直接写即可。
- 例:查询书名包含’传’的图书。
BookInfo.objects.filter(btitle__contains='传')
- startswith、endswith:以指定值开头或结尾。
- 空查询: isnull:是否为null。
- :查询书名不为空的图书。
BookInfo.objects.filter(btitle__isnull=False)
- 范围查询:in 是否包含在范围内
- 查询编号为1或5的书
BookInfo.objects.filter(id__in=[1,, 5])
- 比较查询
- gt 大于 (greater then)
- gte 大于等于 (greater then equal)
- lt 小于 (less then)
- lte 小于等于 (less then equal)
- 日期查询:year、month、day、week_day、hour、minute、second:对日期时间类型的属性进行运算
F和Q对象
F对象
使用F对象可以实现两个属性的比较,F对象在django.db.models中
查询阅读量大于等于评论量的图书。