详解Django的 exclude() 函数:排除查询结果

  • Post category:Python

Django的exclude()函数是QuerySet API中的方法之一,用于过滤掉不属于查询结果的对象。具体来说,exclude()接收一个或多个关键字参数(即字段名和对应的值),返回一个新的QuerySet,其中包含了除了被排除对象之外的所有查询结果。

exclude()方法的基本形式如下所示:

queryset.exclude(**kwargs)

其中**kwargs为一个字典,包含了要排除的对象的查询条件。下文将通过例子来具体说明exclude()的使用方法和作用。

例一:假设有一个Student模型,其中有两个字段name和age,我们需要查询年龄不为22岁的所有学生信息。可以通过以下代码进行查询:

from myapp.models import Student

students = Student.objects.exclude(age=22)

QuerySet对象students将返回除了年龄等于22岁的学生信息之外的所有学生信息。

例二:接下来假设有一个Order模型,其中有三个字段customer、price和status,status为表示订单状态,0表示未支付,1表示已支付。我们需要查询未支付订单的信息。可以通过以下代码进行查询:

from myapp.models import Order

orders = Order.objects.exclude(status=1)

QuerySet对象orders将返回未支付订单的所有信息。

除了上述基本用法,exclude()方法还支持多个查询条件的组合使用。例如:

queryset.exclude(**kwargs1).exclude(**kwargs2)

该代码将返回除了满足第一个查询条件kwargs1和第二个查询条件kwargs2都满足的对象之外的查询结果。

总之,exclude()方法是Django QuerySet API中非常实用和常用的一种方法。在实际开发中,我们通常都需要排除某些对象,而不是仅仅筛选出需要的对象,这时exclude()方法就能发挥它强大的筛选和过滤功能。