基础条件查询
查询语法
filter(模型属性__条件运算符=值)
例:
filter(name__contains='湖')
- 说明:查询语句是属性名称和比较运算符间使用两个下划线相连,所以定义的模型属性名不能包括多个下划线
- 实现sql中where的功能,可以调用过滤器filter()、exclude()、get()
- 下面以filter()为例
查询的需求
# 1.查询id为1的书籍
# 2.查询书名包含‘湖’的书籍
# 3.查询书名以‘部’结尾的书籍
# 4.查询书名不为空的书籍
# 5.查询编号为2或4的书籍
# 6.查询编号大于2的书籍
# 7.查询id不等于3的书籍
# 8.查询1980年发表的书籍
# 9.查询1990年1月1日后发表的书籍
查询实现
1.查询id为1的书籍 (exact : 判断相等)
bookInfos = BookInfo.books.filter(id__exact=1)
2.查询书名包含‘湖’的书籍 (contains : 是否包含)
bookInfos = BookInfo.books.filter(name__contains='湖')
3.查询书名以‘部’结尾的书籍 (startswith/endswith : 以什么开头/以什么结尾)
bookInfos = BookInfo.books.filter(name__endswith='部')
4.查询书名不为空的书籍 (isnull : 是否为null)
bookInfos = BookInfo.books.filter(name__isnull=False)
5.查询编号为2或4的书籍(pk:主键/id) (in : 是否包含在范围内)
bookInfos = BookInfo.books.filter(pk__in=[2,4])
6.查询编号大于2的书籍
gt、gte、lt、lte : 大于、大于等于、小于、小于等于
bookInfos = BookInfo.books.filter(id__gt=2)
7.查询id不等于3的书籍 (exclude : 条件以外的数据)
bookInfos = BookInfo.books.exclude(id=3)
8.查询1980年发表的书籍
year、month、day、week_day、hour、minute、second : 对日期时间类型的属性进行运算
bookInfos = BookInfo.books.filter(pub_date__year=1980)
9.查询1990年1月1日后发表的书籍
from datetime import date bookInfos = BookInfo.books.filter(pub_date__gt=date(1990,1,1))
提示
exact
、contains
、startswith
、endswith
运算符都区分大小写- 在这些运算符前加上
i
表示不区分大小写- 如
iexact
、icontains
、istartswith
、iendswith
- 如