Django ORM双下划线查询方法

ORM双下划线查询方法

方法描述
__gt大于
__lt小于
__gte大于等于
__lte小于等于
__in
__range取指定范围内对应数据,并且首尾都要
__contains模糊查询,查询出指定字符数据,区分大小写
__icontains忽略大小写
__startswith查询以指定字符开头数据
__endswith查询以指定字符结尾数据

数据准备

idnameageregister_time
18junjie182004-01-01
19nn102004-01-01
20tom992022-03-02
21mary182022-01-01
22gary52022-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: 模糊查询,查询出指定字符数据,区分大小写

新增一条用户信息

idnameageregister_time
23JUNJIE100002002-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>]>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值