网站设计公司上海苏州尚云网站建设
在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  | 
