【问题标题】:filter all the installed apps with their model and permission in django使用 django 中的模型和权限过滤所有已安装的应用程序
【发布时间】:2020-05-25 15:13:46
【问题描述】:

我想显示所有已安装应用和模型的列表以及他们的权限。

例如

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 permissions


    【解决方案1】:

    您可以获取已安装应用的列表(不包括 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 2020-06-06
      • 2023-03-24
      • 1970-01-01
      • 2011-01-15
      相关资源
      最近更新 更多