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

时间:2013-04-22 15:36:22

标签: 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()]

1 个答案:

答案 0 :(得分:10)

来自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