Django条件查询

一、字段查询

1.查询等
exact:表示判等。
例:查询编号为1的图书。
list=BookInfo.objects.filter(id__exact=1)
也可以写为:
list=BookInfo.objects.filter(id=1)

2 模糊查询
(1)contains:是否包含。
例:查询书名包含’传’的图书。
list = BookInfo.objects.filter(btitle__contains=‘传’)
(2)startswith:以指定值开头。
例:找出所有的姓张的用户
user_list=UserInfo.objects.filter(username_startwith=‘张’)
(3)endswith:以指定值结尾
例:找出所有的以‘张’结尾的用户
user_list=UserInfo.objects.filter(username_startwith=‘张’)
(4)空查询
例:查询书名不为空的图书。
list = BookInfo.objects.filter(btitle__isnull=False)
(5)范围查询
in:是否包含在范围内。
例:查询编号为1或6或9的图书
list = BookInfo.objects.filter(id__in=[1, 6, 9])
(6)比较查询
gt:大于
gte:大于等于
lt:小于
lte:小于等于
例:查询编号大于3的图书
list = BookInfo.objects.filter(id__gt=3)
例:查询编号大于等于5的图书
list = BookInfo.objects.filter(id__gte=5)
例:查询编号小于7的图书
list = BookInfo.objects.filter(id__lt=7)
例:查询编号小于等于3的图书
list = BookInfo.objects.filter(id__lte=8)
(7)不等于的运算符,使用exclude()过滤器。
例:查询编号不等于3的图书
list = BookInfo.objects.exclude(id=3)
(8)日期查询:对日期时间类型的属性进行运算。
year:年
month:月
day:日
hour:小时
minute:分
second:秒
例:查询1990年发表的图书。
list = BookInfo.objects.filter(bpub_date__year=1990)
查询1980年5月1日后发表的图书。
list = BookInfo.objects.filter(bpub_date__gt=date(1990, 5, 1))

3.F对象
F是属性之间的对比,想要使用F对象,首先要进行导包,代码如下:
from django.db.models import F
例:找出电话号码大于密码的用户
user=UserInfo.objects.filter(phone__gt=F(‘password’))

4.Q对象
使用Q对象也要进行导包,代码如下:
from django.db.models import Q
(1)Q对象可以使用&、|连接,&表示逻辑与,|表示逻辑或。
例:找出姓张的并且id>2的
user=UserInfo.objects.filter(Q(username_startwith=‘张’)&Q(id__gt=2))
(2)Q对象前可以使用~操作符,表示非not。
例:查询编号不等于3的图书。
list = BookInfo.objects.filter(~Q(pk=3))

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值