一. 基本查询
FilmInfo.objects.get(fid=1)
<FilmInfo: django>
特别注意1:get查询单⼀结果,如果不存在会抛出模型类.DoesNotExist异常。
FilmInfo.objects.get(fid=20)
film.models.FilmInfo.DoesNotExist: FilmInfo matching query does not exist.
特别注意2:get查询单⼀结果,如果存在多条结果,会报错
film.models.FilmInfo.MultipleObjectsReturned: get() returned more than one FilmInfo -- it returned 2!
特别注意3:如果使用指定条件查询的记录为1,会返回这条记录对应的模型实例对象,可以使用模型对象.字段名去获取响应的字段值
all查询多个结果。
FilmInfo.objects.all()
<QuerySet [<FilmInfo: django>, <FilmInfo: 金刚狼>, <FilmInfo: 夺冠>, <FilmInfo: 我和我的家人>, <FilmInfo: shell>, <FilmInfo: 我爱你中国>, <FilmInfo: 我爱你china>]>
count查询结果数量。
FilmInfo.objects.count()
7
二. 过滤查询
实现SQL中的where功能,包括
1、filter过滤出多个结果
2、exclude排除掉符合条件剩下的结果
3、get过滤单⼀结果 对于过滤条件的使⽤,上述三个⽅法相同,故仅以filter进⾏讲解。
过滤条件的表达语法如下:属性名称__⽐较运算符=值
属性名称和⽐较运算符间使⽤两个下划线,所以属性名不能包括多个下划线
案例:
4、查询编号为1的影片
exact:表示等于。
FilmInfo.objects.filter(fid__exact=1)
<QuerySet [<FilmInfo: django>]>
FilmInfo.objects.filter(fid=1)
<QuerySet [<FilmInfo: django>]>
5、查询影⽚名包含’我’的影⽚
FilmInfo.objects.filter(fname__contains='我')
<QuerySet [<FilmInfo: 我和我的家人>, <FilmInfo: 我爱你中国>, <FilmInfo: 我爱你china>]>
6、查询影⽚以’冠’结尾的影⽚
startswith、endswith:以指定值开头或结尾;以上运算符都区分⼤⼩写;
在这些运算符前加上i表示不区分⼤⼩写,如iexact、icontains、istartswith、iendswith.
FilmInfo.objects.filter(fname__endswith='冠')
<QuerySet [<FilmInfo: 夺冠>]>
isnull:是否为null
7、查询影⽚为空的影⽚
FilmInfo.objects.filter(fname__isnull=True)
<QuerySet []>
8、查询影⽚编号为1或3或5的影⽚
in:是否包含在范围内
FilmInfo.objects.filter(fid__in=[1,3,5])
<QuerySet [<FilmInfo: django>, <FilmInfo: 夺冠>, <FilmInfo: shell>]>
9、查询影⽚编号⼤于3的影⽚
gt⼤于 (greater then)
gte⼤于等于 (greater then equal)
lt⼩于 (less then)
lte⼩于等于 (less then equal)
FilmInfo.objects.filter(fid__gt=3)
<QuerySet [<FilmInfo: 我和我的家人>, <FilmInfo: shell>, <FilmInfo: 我爱你中国>, <FilmInfo: 我爱你china>]>
10、查询2020年发表的影⽚
year、month、day、week_day、hour、minute、second:对⽇期时间类型的属性进⾏运算。
FilmInfo.objects.filter(pub_date__year=2020)
<QuerySet [<FilmInfo: 金刚狼>, <FilmInfo: 我和我的家人>]>
11、查询2019年1⽉1⽇后发表的影⽚
FilmInfo.objects.filter(pub_date__gt='2019-1-1')
<QuerySet [<FilmInfo: 金刚狼>, <FilmInfo: 夺冠>, <FilmInfo: 我和我的家人>, <FilmInfo: 我爱你中国>, <FilmInfo: 我爱你china>]>