如何在查询中取反Q对象?

时间:2019-07-19 11:01:00

标签: django

如果要满足特定条件,我想否定一个Q对象,而不必在视图中重复多个查询。

我尝试将查询分解为多个函数,但我不禁要以为我仍然有大量重复的代码。

query = User.objects.all()
if active:
  query.filter(Q(active=active))
elif active == False:
  query.filter(Q(active=active) | Q(active__isnull=True))
else:
  query.filter(Q(active__isnull=True) | Q(setup=False))

1 个答案:

答案 0 :(得分:0)

您可以在here中找到有关制作复杂查询集的更多信息,但是要否定 Q对象查询集,您可以执行以下操作:

queryset = Model.objects.filter(~Q(active=active))