【问题标题】:Hide action in django admin if they don't have permission如果他们没有权限,则在 django 管理员中隐藏操作
【发布时间】:2013-04-22 15:36:22
【问题描述】:

我在我的管理页面中添加了一个操作,允许用户将选定的记录导出到 Excel 工作表。现在我需要能够只允许一些用户能够导出数据。我有一个 UserProfile 模型,它有一个 can_export 布尔字段。

只有在将can_export 字段设置为 True 时,我才能在 django admin 中显示“导出到 Excel”操作?

我试图在 admin.py 中找到一种方法来获取请求对象并在设置操作之前执行 IF 语句,但没有运气。我当然得到一个 name'request' is not defined 错误。

if request.user.get_profile().can_export:
    actions = [export_data()]

【问题讨论】:

  • 执行 IF 语句后发生了什么?继续显示操作还是继续隐藏操作?
  • 它不起作用:名称'request'未定义
  • 如何为您的操作创建一个新的自定义权限?

标签: django django-admin


【解决方案1】:

来自 FineManual (https://docs.djangoproject.com/en/1.5/ref/contrib/admin/actions/):

    class MyModelAdmin(admin.ModelAdmin):
        ...

        def get_actions(self, request):
            actions = super(MyModelAdmin, self).get_actions(request)
            if request.user.username[0].upper() != 'J':
                if 'delete_selected' in actions:
                    del actions['delete_selected']
            return actions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2012-02-03
    • 2021-08-03
    • 1970-01-01
    • 2012-03-01
    相关资源
    最近更新 更多