在类外部的admin.py中访问请求对象

时间:2015-03-17 20:11:15

标签: python django django-admin

如何访问request对象,以便我可以加载不同的管理员视图,具体取决于用户的排名。

以下是我想要的代码(admin.py),但不知道如何访问当前用户。

class AdvancedPost(admin.ModelAdmin):
    list_display = ['post_title', 'body', 'rating']

class SimplePost(admin.ModelAdmin):
    list_display = ['post_title', 'category']

if request.user.is_superuser:
    admin.site.register(Post, AdvancedPost)
else:
    admin.site.register(Post, SimplePost)

由于

1 个答案:

答案 0 :(得分:3)

您可以编写单个类并根据需要覆盖各个方法,例如:

class PostAdmin(admin.ModelAdmin):
    def get_list_display(request):
        if request.user.is_superuser:
            return ['post_title', 'body', 'rating']
        else:
            return ['post_title', 'category']

admin.site.register(Post, PostAdmin)

请参阅https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_list_display以获取可以覆盖的方法列表。