[Update] 优化sql, or方式改为union (#3682)

* [Update] 优化sql, or方式改为union

* [Update] 优化union操作,直接union后,queryset 的一些参数不能使用,如annoate, 如filter assets__isnull=True
This commit is contained in:
老广
2020-02-05 15:56:28 +08:00
committed by GitHub
parent aa2255a87e
commit 3c69860b24
7 changed files with 53 additions and 34 deletions

View File

@@ -8,7 +8,7 @@ from django.db.models import Q
from django.utils import timezone
from orgs.mixins.models import OrgModelMixin
from common.utils import date_expired_default, set_or_append_attr_bulk
from common.utils import date_expired_default, union_queryset
from orgs.mixins.models import OrgManager
@@ -83,7 +83,8 @@ class BasePermission(OrgModelMixin):
from users.models import User
users_id = self.users.all().values_list('id', flat=True)
groups_id = self.user_groups.all().values_list('id', flat=True)
users = User.objects.filter(
Q(id__in=users_id) | Q(groups__id__in=groups_id)
).distinct()
users = User.objects.filter(id__in=users_id)
if groups_id:
groups_users = User.objects.filter(groups__id__in=groups_id)
users = union_queryset(users, groups_users)
return users