隐藏在Django管理站点的某些字段为不同的用户(Hide certain fields in Dj

2019-09-16 20:16发布

我有一个管理网站,我需要开拓更多的管理员。

目前我的模型看起来像

class YouTube(models.Model):
    name =  models.CharField(max_length=100)
    credit_card_number = models.CharField(max_length=100)

有没有在管理网站的工作框架的方式来让这个只有超级用户可以看到信用卡号码? 在管理网站的框架,我只能看到添加,编辑,删除的能力。

Answer 1:

创建方法YouTube.get_cc_root_only,你在哪里检查,如果用户是root,并在YouTubeAdmin类中使用它(list_display)

更新:

class XyzAdmin(admin.ModelAdmin):
    def get_cc_root_only(self, obj):
        if self.username == "admin":
            return "CC"
        return "XXX"

    def changelist_view(self, request, extra_context = None):
        self.username = request.user.username
        return super(XyzAdmin,self).changelist_view(request, extra_context = extra_context)

    list_display = ("name", "get_cc_root_only")


文章来源: Hide certain fields in Django admin site for different user