在filter()?方法,exclude()?方法中使用大于,小于,模糊匹配等操作符。
常見的操作符如下:
操作符 | 含義 | 示例 |
= | 等于 | Book.objects.filter(price=10) |
!= 或 __ne | 不等于 | 用于查找字段不等于特定值的記錄。但更常用exclude()方法。 |
__gt | 大于 | 用于查找字段大于特定值的記錄Book.objects.filter(price__gt=10) |
__gte | 大于等于 | Book.objects.filter(price__gte=10) |
__lt | 小于 | 用于查找字段小于特定值的記錄。 Book.objects.filter(price__lt=10) |
__lte | 小于等于 | 用于查找字段小于等于特定值的記錄。 Book.objects.filter(price__lte=10) |
__in | 在某個列表內 | 你想要獲取所有作者在列表中的書籍,你可以使用__in這將返回一個QuerySet,其中包含了所有作者為 '小強' 或 '小龍' 的書籍。 authors = ['小強', '小龍'] |
__contains | 包含 | 用于查找字段包含特定子字符串的記錄。 Book.objects.filter(title__contains="Python") |
__icontains | 不包含 | 用于查找字段不包含特定子字符串的記錄。注意, Book.objects.exclude(title__icontains="Python") |
__startswith | 以...開始 | 用于查找字段以特定字符串開始的記錄。 Book.objects.filter(title__startswith="Python") |
__endswith | 以...結束 | 用于查找字段以特定字符串結束的記錄。 Book.objects.filter(title__endswith="Book") |
__exact | 精確匹配 | 用于查找字段等于特定值的記錄。這與直接使用 Book.objects.filter(title__exact="Python Cookbook") |
__regex 或 __iregex | 模糊匹配 | 用于使用正則表達式匹配字段的記錄。 Book.objects.filter(title__iregex=r"Python.*") |
__year | 日期字段的年份 | 假設你有一個Post模型,其中包含一個created_at字段,類型為DateTimeField。如果你想獲取所有在2023年創建的帖子,你可以使用__year這將返回一個QuerySet。 posts=Post.objects.filter(created_at__year=2023) |
__month | 日期字段的月份 | 假設你有一個Sales模型,其中包含一個sale_date字段,類型為DateTimeField或DateField 。如果你想獲取所有在6月份的銷售記錄,你可以使用__month操作符如下:這將返回一個QuerySet,其中包含了所有在6月份的銷售記錄。 from myapp.models import Sales sales_in_june = Sales.objects.filter(sale_date__month=6) |
__day | 日期字段的天數 | 假設你有一個Event模型,其中包含一個event_date字段,類型為DateTimeField或DateField。如果你想獲取所有在15號發生的事件,你可以使用__day from myapp.models import Event |
__week_day | 獲取指定周日之前的數據 | 假設你有一個LogEntry模型,其中包含一個timestamp字段,類型為DateTimeField。如果你想獲取所有在星期五發生的日志條目,你可以使用__week_day操作符如下:這將返回一個QuerySet,其中包含了所有在星期五發生的日志條目。請注意,Django中的星期幾是以1開始的,即1表示星期一,7表示星期日。 from myapp.models import LogEntry entries_on_friday = LogEntry.objects.filter(timestamp__week_day=5) |
__hour | 獲取指定區間小時的數據 | 假設你有一個ActivityLog模型,其中包含一個timestamp字段,類型為DateTimeField from myapp.models import ActivityLog |
__minute | 獲取指定區間分的數據 | 假設你有一個SystemLog模型,其中包含一個timestamp字段,類型為DateTimeField from myapp.models import SystemLog |
__second | 獲取指定秒的數據 | 假設你有一個Trade模型,其中包含一個timestamp字段,類型為DateTimeField。如果你想獲取所有在某個特定秒數內發生的交易記錄,你可以使用__second操作符如下:這將返回一個QuerySet,其中包含了所有在10點30分15秒發生的交易記錄。 from myapp.models import Trade |
&? ?,? ?| ? | 查詢多個條件 | 使用Q對象,可以使用邏輯“與”(&)和“或”(|)操作符來組合多個查詢條件 from django.db.models import Q |