Django管理员限制对列表视图的访问

时间:2019-01-17 11:01:18

标签: python django django-admin

这是一个模特:

class Person(models.Model):
    name= models.CharField(max_length=100, blank=True)
    identity_number= models.IntegerField(unique=True)

name字段应为公开字段,identity_number则应保密。

我想在管理员列表视图中显示name,并在更改表单视图中显示两个字段。

我想创建一组只能访问列表视图的用户,以及另一组可以访问两个视图的用户。

这意味着第一组用户不应看到更改表单的链接,并且如果他们尝试直接访问更改表单页面,则应返回403(或类似内容)。如何实现呢?

1 个答案:

答案 0 :(得分:1)

如果用list view表示changelist_view,则可以执行以下操作:

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('name', 'identity_number', )

    def changelist_view(self, request, extra_context=None):
        if request.user.groups.filter(name='your_group_name').exists():
            self.list_display = ('name', )
            # if you dont want any links to the change_form
            self.list_display_links = None
        return super(MyModelAdmin, self).changelist_view(request, extra_context)