如何在 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_label
和 model
,您可以从中排除为 用户、组、会话等定义的权限。
例如,您可以找到模型用户、组、会话等的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,并将它们排除在外。
我自己试过了,虽然过程很长,但我希望其他人有更好的解决方案,更有效,更快捷。
我正在尝试显示与我的项目相关的用户权限,不包括一些默认的 django 用户权限。我正在执行以下代码。我想从我的 html 模板中排除会话、content_type、组等权限。我该怎么做?
views.py
permissions = Permission.objects.all()
template
我要删除用户可以添加组,用户可以在模板中更改组
{% for permission in permissions %}
{{permission.name}}
{% endfor %}
如果查看权限对象的字段,可以找到一个名为content_type
的字段。 Content_type 指定 app_label
和 model
,您可以从中排除为 用户、组、会话等定义的权限。
例如,您可以找到模型用户、组、会话等的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,并将它们排除在外。
我自己试过了,虽然过程很长,但我希望其他人有更好的解决方案,更有效,更快捷。