django ORM 操作记录

37 篇文章 3 订阅

##查询语法要点

#查询user所有记录 id=1 的数据,如果存在返回查找的对象,否则返回None
res = User.objects.all().get(id=1)
#查询user所有记录 id=1 的数据,返回的是一个列表,
res = User.objects.all().filter(id=1)
#查询user表 条件id=1 的数据,返回的是一个列表,
res = User.objects.filter(id=1)
#查询user表 条件id=1 并且没有删除 的数据,返回的是第一个对象
res = User.objects.filter(id=1,is_delete=False).first()
#查询user表 返回的是最后一个对象
res = User.objects.filter().last() 或 user=User.objects.all().last() 或user=User.objects.last()
#查询user表 并进行计数 并且可以加筛选条件计数
res = User.objects.filter().count()
#查询user表 条件id=1 的数据,返回的是一个唯一的对象,里面的条件只能是一个,
res = User.objects.get(id=1)
#查询user表 条件id=1 的数据,并且对返回的数据进行排序,这里是安装date排序,如果是-date那么就是反向的排序
res = User.objects.filter(id=1).order_by('date')

##下面列举django orm中的常用查询的筛选方法:

大于、大于等于

__gt 大于
__gte 大于等于

User.objects.filter(age__gt=10)    // 查询年龄大于10岁的用户
User.objects.filter(age__gte=10)  // 查询年龄大于等于10岁的用户

小于、小于等于

__lt 小于
__lte 小于等于

User.objects.filter(age__lt=10)     // 查询年龄小于10岁的用户
User.objects.filter(age__lte=10)   // 查询年龄小于等于10岁的用户

in

__in

查询id在某一范围的用户
User.objects.filter(id__in=[10, 20, 30])

like

__exact        精确等于 like 'aaa'
__iexact       精确等于 忽略大小写 ilike 'aaa'
__contains     包含 like '%aaa%'
__icontains    包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
#例:查询用户名字里面包含 文 的并且没有删除的数据
user = User.objects.filter(name__icontains='文',is_delete=False)

is null / is not null

__isnull 判空

User.objects.filter(username__isnull=True)    // 查询用户名为空的用户
User.objects.filter(username__isnull=False)  // 查询用户名不为空的用户

不等于/不包含于

User.objects.filter().exclude(age=10)    // 查询年龄不为10的用户
User.objects.filter().exclude(age__in=[10, 20])  // 查询年龄不为在 [10, 20] 的用户

其他模糊查询

__startswith 以…开头
__istartswith 以…开头 忽略大小写
__endswith 以…结尾
__iendswith 以…结尾,忽略大小写
__range 在…范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日

Django使用or条件查询:

from django.db.models import Q

User.objects.filter(Q(state=0) | Q(state=1))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haeasringnar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值