如何设置多个排除条件?

vin*_*ntf 1 django django-models

执行以下查询的正确方法是什么:

sites = Site.objects.all().exclude(itempage__isnull=True or itempage__pk=1)
Run Code Online (Sandbox Code Playgroud)

A. *_*arr 6

我建议使用 Django 的Q 对象来构建更复杂的查询。

from django.db.models import Q
Site.objects.exclude(Q(itempage__isnull=True) | Q(itempage__pk=q))
Run Code Online (Sandbox Code Playgroud)

Q 对象还支持运算符求反,~如下所示:

from django.db.models import Q
Site.objects.filter(~Q(Q(itempage__isnull=True) | Q(itempage__pk=q)))
Run Code Online (Sandbox Code Playgroud)