1. 程式人生 > 其它 >Django ORM雙下劃線查詢方法

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