如何在 django html 模板中排除某些特定的 django 权限

how to exclude some specific django permissions in django html template

我正在尝试显示与我的项目相关的用户权限,不包括一些默认的 django 用户权限。我正在执行以下代码。我想从我的 html 模板中排除会话、content_type、组等权限。我该怎么做?

views.py

permissions = Permission.objects.all() 

template

我要删除用户可以添加组,用户可以在模板中更改组

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

如果查看权限对象的字段,可以找到一个名为content_type的字段。 Content_type 指定 app_labelmodel,您可以从中排除为 用户、组、会话等定义的权限。

例如,您可以找到模型用户、组、会话等的content_type ids:

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)

通过这种方式,您可以获得每个不想在模板中显示的模型的内容类型 ID,并将它们排除在外。

我自己试过了,虽然过程很长,但我希望其他人有更好的解决方案,更有效,更快捷。