Django的filter()
函数是用来过滤模型对象的查询集的工具,可以根据指定条件来过滤出符合条件的对象。filter()
函数的基本语法如下所示:
Model.objects.filter(字段名=值)
其中,Model
是要被查询的模型名,字段名
是要被过滤的字段名,值
是指定的字段值。filter()
函数可以接收多个参数,多个参数之间的关系可以用逻辑运算符&
(与)和|
(或)进行连接。
以下是filter()
函数的两个实例:
实例一:过滤出年龄大于20且姓名为“小明”的用户
假设有以下用户模型:
class User(models.Model):
name = models.CharField(max_length=30)
age = models.IntegerField()
gender = models.BooleanField()
要过滤出年龄大于20且姓名为“小明”的用户,可以使用以下代码:
users = User.objects.filter(name='小明', age__gt=20)
其中,__gt
是大于符号,代表过滤出年龄大于20的用户。
实例二:过滤出最近发布的5篇文章
假设有以下文章模型:
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_time = models.DateTimeField(auto_now_add=True)
要过滤出最近发布的5篇文章,可以使用以下代码:
posts = Post.objects.filter().order_by('-pub_time')[:5]
其中,order_by()
函数是用来指定按照哪个字段或者多个字段排序,-pub_time
表示按照文章发布时间倒序排列,最近发布的文章排在前面。[:5]
表示只取前5篇文章。
在过滤模型对象时,常常会用到filter()
函数,它是Django查询集中的常用方法之一。