如果要满足特定条件,我想否定一个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))
答案 0 :(得分:0)
您可以在here中找到有关制作复杂查询集的更多信息,但是要否定 Q对象查询集,您可以执行以下操作:
queryset = Model.objects.filter(~Q(active=active))