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

  • Post category:Python

那么我们就来详细讲解Django的filter()函数作用及使用方法的完整攻略吧。

简介

filter()函数是Django中最常用的方法之一。该函数的作用是根据指定的查询条件筛选数据库中的记录,然后将满足条件的记录返回。

语法

filter()函数的语法非常简单,如下所示:

model.objects.filter(<field_name>=<value>)

其中,<field_name>代表要筛选的字段名称,可以是一个或多个字段名称;<value>代表要筛选的值,可以是一个或多个值,多个值用逗号分隔。

实例1

假设我们有一个Person模型,其中包含以下字段:

class Person(models.Model):
    name = models.CharField(max_length=50)
    age = models.IntegerField()
    is_student = models.BooleanField()
    city = models.CharField(max_length=50)

我们现在想要查询age字段大于等于18,且is_student字段为True的人员记录。可以使用如下代码实现:

from myapp.models import Person

students = Person.objects.filter(age__gte=18, is_student=True)

在上述代码中,我们使用__gte运算符表示age字段大于等于18。此外,我们还使用了逗号将多个查询条件连接起来。

实例2

现在我们再举一个例子,使用filter()函数按照城市名称查询人员记录。在这个例子中,我们可以使用__icontains运算符来搜索符合条件的记录。

from myapp.models import Person

search_query = "New York"

results = Person.objects.filter(city__icontains=search_query)

在上述代码中,我们使用了__icontains运算符来查询包含search_query中字符串的城市名称。