Django ORM双下划线查询方法
ORM双下划线查询方法
方法 | 描述 |
---|---|
__gt | 大于 |
__lt | 小于 |
__gte | 大于等于 |
__lte | 小于等于 |
__in | 或 |
__range | 取指定范围内对应数据,并且首尾都要 |
__contains | 模糊查询,查询出指定字符数据,区分大小写 |
__icontains | 忽略大小写 |
__startswith | 查询以指定字符开头数据 |
__endswith | 查询以指定字符结尾数据 |
数据准备
id | name | age | register_time |
---|---|---|---|
18 | junjie | 18 | 2004-01-01 |
19 | nn | 10 | 2004-01-01 |
20 | tom | 99 | 2022-03-02 |
21 | mary | 18 | 2022-01-01 |
22 | gary | 5 | 2022-01-01 |
models.py
from django.db import models
# Create your models here.
class User(models.Model):
name = models.CharField(max_length=32)
age = models.IntegerField()
register_time = models.DateField() # 不带time则为年月日
def __str__(self):
return '对象>>>%s' % self.name
__gt:大于
res = models.User.objects.filter(age__gte=90)
print(res)
# 输出:<QuerySet [<User: 对象>>>tom>]>
__lt: 小于
res = models.User.objects.filter(age__lt=90)
print(res)
# 输出: <QuerySet [<User: 对象>>>gary>]>
__gte: 大于等于
res = models.User.objects.filter(age__gte=18)
print(res)
# 输出:<QuerySet [<User: 对象>>>junjie>, <User: 对象>>>tom>, <User: 对象>>>mary>]>
__lte: 小于等于
res = models.User.objects.filter(age__lte=18)
print(res)
# 输出:<QuerySet [<User: 对象>>>junjie>, <User: 对象>>>nn>, <User: 对象>>>mary>, <User: 对象>>>gary>]>
__in: 或,取存在。
res = models.User.objects.filter(age__in=[18,5,100])
print(res)
# 输出:<QuerySet [<User: 对象>>>junjie>, <User: 对象>>>mary>, <User: 对象>>>gary>]>
__range: 取指定范围内对应数据,并且首尾都要
res = models.User.objects.filter(age__range=(5,18))
print(res)
# 输出:<QuerySet [<User: 对象>>>junjie>, <User: 对象>>>nn>, <User: 对象>>>mary>, <User: 对象>>>gary>]>
__contains: 模糊查询,查询出指定字符数据,区分大小写
新增一条用户信息
id | name | age | register_time |
---|---|---|---|
23 | JUNJIE | 10000 | 2002-01-01 |
res = models.User.objects.filter(name__contains='j')
print(res)
# 输出:<QuerySet [<User: 对象>>>junjie>]>
__icontains: 忽略大小写
res = models.User.objects.filter(name__icontains='j')
print(res)
# 输出:<QuerySet [<User: 对象>>>junjie>, <User: 对象>>>JUNJIE>]>
__startswith: 查询以指定字符开头数据
res = models.User.objects.filter(name__startswith='J')
print(res)
# 输出:<QuerySet [<User: 对象>>>JUNJIE>]>
__endswith: 查询以指定字符结尾数据
res = models.User.objects.filter(name__endswith='y')
print(res)
# 输出:<QuerySet [<User: 对象>>>mary>, <User: 对象>>>gary>]>
分类:
django
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!