Как исключить некоторые конкретные разрешения Django в HTML-шаблон Django - PullRequest
1 голос
/ 19 июня 2019

Я пытаюсь отобразить пользовательские разрешения, относящиеся к моему проекту, за исключением некоторых пользовательских разрешений django по умолчанию.Я реализую следующий код.Я хочу исключить разрешения, такие как сессии, content_type, группы из моего HTML-шаблона.Как я могу это сделать ??

views.py

permissions = Permission.objects.all() 

template

Я хочуудалить пользователя можно добавить группу, пользователь может изменить группу в шаблоне

{% for permission in permissions %}
{{permission.name}}
{% endfor %}

1 Ответ

1 голос
/ 19 июня 2019

Если вы проверите поля объекта разрешения, вы можете найти поле с именем 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)

Таким образом, вы можете получить идентификаторы типов контента для каждой модели, которые вы не хотите показывать в шаблоне, иисключить их.

Я попробовал сам, и хотя это длительный процесс, я надеюсь, что у кого-то есть лучшее решение, более эффективное и быстрое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...