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>]>
posted @ 2022-03-03 17:06  谢俊杰  阅读(48)  评论(0编辑  收藏  举报