显示不同的list_display取决于用户

Ric*_*ang 4 django django-admin

我有一个模型包括一些列:A,B,C.当记录器是超级用户时,list_display将包括所有列(A,B,C),否则,其他用户只能看到部分列,例如: B和C.相关答案的大多数是用户get_form(...),但这改变了'exclude','fields'和'fieldsets',我想改变list_dispaly.

hel*_*ate 12

您可以使用该changelist_view方法进行编辑list_display:

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('A', 'B', 'C',)

    def changelist_view(self, request, extra_context=None):
        if not request.user.is_superuser:
            self.list_display = ('B', 'C',)
        return super(MyModelAdmin, self).changelist_view(request, extra_context)
Run Code Online (Sandbox Code Playgroud)