Merge pull request #8793 from seros1521/fix_8715

Fixes #8715: eliminates duplicates when used in many-to-many field constraints
This commit is contained in:
Jeremy Stretch 2022-03-07 09:27:14 -05:00 committed by GitHub
commit bffe63a233
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -39,6 +39,12 @@ class RestrictedQuerySet(QuerySet):
# Any permission with null constraints grants access to _all_ instances
attrs = Q()
break
else:
# for else, when no break
# avoid duplicates when JOIN on many-to-many fields without using DISTINCT.
# DISTINCT acts globally on the entire request, which may not be desirable.
allowed_objects = self.model.objects.filter(attrs)
attrs = Q(pk__in=allowed_objects)
qs = self.filter(attrs)
return qs