详解Django的 filter() 函数:过滤查询集合

  • Post category:Python

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查询集中的常用方法之一。