django - 使用 django 中的模型和权限过滤所有已安装的应用程序
问题描述
我想显示所有已安装的应用程序和模型的列表以及他们的权限。
例如
app_name_1
model_name_1
permission_1
permission_2
...........
model_name_2
permission_1
permission_2
...........
app_name_2
model_name_1
permission_1
permission_2
...........
model_name_2
permission_1
permission_2
...........
and so on.
解决方案
您可以获得已安装应用程序的列表(不包括 Django 默认值):
from django.apps import apps
from django.conf import settings
from django.contrib.auth.models import Permission
apps_list = [app for app in settings.INSTALLED_APPS if not 'django' in app]
然后获取所有模型:
models = []
for app in apps_list:
models.append(apps.all_models[app])
接下来实际上是获得权限:
for model in models:
app_lbl = model._meta.app_label
model_name = model._meta.model_name
permissions = Permission.objects.filter(content_type__app_label=app_lbl, content_type__model=model_name)
推荐阅读
- java - 在数千个 c 和 h 文件中搜索关键字
- c# - 具有序列化类的层次结构中的多态性 - DataContract 消息
- android - 从 firebase 数据库中获取数据:它似乎只是 toast,但没有保存在 Firebase 数据库中
- typeorm - 如何将所有 jiond 数据映射到 typeorm0.1.3 中的单个实体的属性
- php - 如何使用 php 从 zip 存档中复制文件内容和目录数据
- javascript - 在 Node.js 中修改大量 json 文件/数组时的怪异
- azure - 如何解决 ANH for iOS 中的无效凭据错误?
- node.js - 不推荐使用 Gulp 在 npm ls gulp-util 上返回“`-- (empty)”
- javascript - 将 javascript 图像 blob 保存到 ASP.NET Core 控制器
- amazon-web-services - 如何使用无服务器部署为 AWS lambda 部署环境变量