class 之外的 admin.py 中的访问请求对象

Access request object in admin.py outside the class

如何访问 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)

谢谢

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

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 以获取您可以覆盖的方法列表。