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>]>