不等于排除的 Django 模型查询

Django model query with not equal exclusion

我想创建一个参数不相等但在排除部分的查询。

所有帖子都建议排除应该不相等的参数。

所以我需要的是:

Object.objects.filter(param1=p).exclude(param2=False, param3=False, param4 != q)

我试试

Object.objects.filter(param1=p).exclude(param2=False, param3=False).exclude(param4=q)

但是,正如预期的那样,不起作用它与 exclude(param2=False, param3=False, param4=q)

相同

那么如何去做,或者如何正确地链接排除语句,以便第二个排除指向第一个排除而不是第一个过滤器。

这是一道逻辑题。

Exclude (field1 != value1) 等同于 Include(field1 = value1)

因此,您可以使用 filter() 方法,

Object.objects.filter(param1=p<b>, param4=q</b>).exclude(param2=False, param3=False)

或者

使用带有 ~ 符号的 Q() 对象

from django.db.models import Q
Object.objects.filter(param1=p).exclude(<b>~Q(param4=q),</b> param2=False, param3=False)