如果他们没有权限,请在django admin中隐藏操作

Aus*_*tin 3 django django-admin

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

如果将can_export字段设置为True,我怎样才能在django admin中显示"导出到Excel"操作?

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

if request.user.get_profile().can_export:
    actions = [export_data()]
Run Code Online (Sandbox Code Playgroud)

bru*_*ers 11

来自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
Run Code Online (Sandbox Code Playgroud)