查询语句
res
= User
.objects
.all()
res
= User
.objects
.all()[0,2]
res
= User
.objects
.filter(username
='新用户',password
='你好')
res_one
= User
.objects
.get
(id=1)
res
= User
.objects
.exclude
(username
='新用户')
res_s
= User
.objects
.filter(username
='新用户').values
('password')
data
= User
.objects
.all().values
()
data
= list(data
)
res
= User
.objects
.filter(username
='新用户').order_by
("password").reverse
()
res
= User
.objects
.filter(username
='新用户').order_by
("-password")
res_dis
= User
.objects
.filter(username
='新用户').values
('username').distinct
()
res_count
= User
.objects
.filter(username
='新用户').count
()
print(res_count
)
例:查询姓名包含
'新'的用户。
User
.objects
.filter(name__contains
='新')
User
.objects
.filter(name__startswith
='新')
User
.objects
.filter(name__isnull
=True)
User
.objects
.filter(id__in
=[1,3,5])
gt大于
(greater then
)
gte大于等于
(greater then equal
)
lt小于
(less then
)
lte小于等于
(less then equal
)
例:User
.objects
.filter(id__gt
=2)
F对象
之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢? 答:使用F对象,被定义在django.db.models中。
语法如下:
F(属性名) 例:查询阅读量大于等于评论量的图书。
from django.db.models import F BookInfo.objects.filter(readcount__gt=F(‘commentcount’)) 可以在F对象上使用算数运算。
例:查询阅读量大于2倍评论量的图书。
BookInfo.objects.filter(readcount__gt=F(‘commentcount’)*2)
Q对象
多个过滤器逐个调用表示逻辑与关系,同sql语句中where部分的and关键字。
例:查询阅读量大于20,并且编号小于3的图书。
BookInfo.objects.filter(readcount__gt=20,id__lt=3)
或者
BookInfo.objects.filter(readcount__gt=20).filter(id__lt=3) 如果需要实现逻辑或or的查询,需要使用Q()对象结合|运算符,Q对象被义在django.db.models中。
语法如下:
Q(属性名__运算符=值)
例:查询阅读量大于20的图书,改写为Q对象如下。
BookInfo.objects.filter(Q(readcount__gt=20)) Q对象可以使用&、|连接,&表示逻辑与,|表示逻辑或。
例:查询阅读量大于20,或编号小于3的图书,只能使用Q对象实现
BookInfo.objects.filter(Q(readcount__gt=20)|Q(id__lt=3)) Q对象前可以使用~操作符,表示非not。
例:查询编号不等于3的图书。
BookInfo.objects.filter(~Q(id=3))