我想对所有排除查询进行AND操作并将其排除在一个排除函数中。
context['users'] = User.objects.exclude(userprofile__user_role__role_title='Super Admin').exclude(userprofile__user_is_deleted = True).exclude(is_superuser=True)
上面我有两个排除对象,而我想要一个
context['users'] = User.objects.exclude(userprofile__user_role__role_title='Super Admin', userprofile__user_is_deleted = True, is_superuser=True)
但是我认为它不起作用
答案 0 :(得分:2)
用逗号分隔所有查询的方式与AND相似,如果要组合多个AND / OR运算,则可以在Django中使用Q对象。
例如
from django.db.models import Q
context['users'] = User.objects.exclude((Q(userprofile__user_role__role_title='Super Admin') & Q(is_superuser=True)) | Q(userprofile__user_is_deleted = True))
它可能对您不起作用的原因是,也许您使用了错误的查询?可能的原因可能是:
icontains
并使用小写的“超级管理员” 让我知道是否有帮助。
答案 1 :(得分:-1)
您可以尝试使用Q()
from django.db.models import Q
User.objects.exclude(Q(role_title='Super Admin')| Q(user_is_deleted = False))