Django ORM雙下劃線查詢方法
阿新 • • 發佈:2022-03-03
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>]>