Если вы проверите поля объекта разрешения, вы можете найти поле с именем content_type
.Content_type указывает app_label
и model
, из которых вы можете исключить разрешения, определенные для пользователей, групп, сеансов и т. Д.
Например, вы можете найти content_typeидентификаторы моделей пользователь, группа, сеанс и т. д. как:
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import Permission
content_type_ids = [] # a list to store the ids of the content_type object which you want to exclude
# for user model
content_type_ids.append(ContentType.objects.get(model='user').id)
# for session model
content_type_ids.append(ContentType.objects.get(model='session').id)
# for group model
content_type_ids.append(ContentType.objects.get(model='group').id)
# exclude the Permissions having content_type_id obtained
permissions = Permission.objects.exclude(content_type_id__in=content_type_ids)
Таким образом, вы можете получить идентификаторы типов контента для каждой модели, которые вы не хотите показывать в шаблоне, иисключить их.
Я попробовал сам, и хотя это длительный процесс, я надеюсь, что у кого-то есть лучшее решение, более эффективное и быстрое.