首页 > 解决方案 > 如何拒绝子用户仅编辑一个字段并且只有管理员有权访问它的权限...?

问题描述

这是我的 Django 模型

type_choices = [
        ('Yes', 'Yes'),
        ('no', 'no'),
    ]

verified= models.CharField(max_length=50,default='----',choices=type_choices)
name = models.CharField(max_length=50,
                                       default='',
                                       validators=[MinLengthValidator(4)])
age= models.TextField(max_length=5000,
                                       default='')

我有一条名为 Verified 的记录,我必须拒绝所有用户使用该记录的权限,并且该记录只能由管理员使用。

您能帮我如何限制其他用户更改此记录,并且只有可读且管理员应该有权更改记录的值吗?

标签: djangodjango-modelsdjango-rest-frameworkdjango-templatesdjango-views

解决方案


您必须覆盖get_fields您的 ModelAdmin,您可以动态返回每个请求的字段列表

class MyModelAdmin(admin.ModelAdmin):

    model = MyModel

    def get_fields(self, request, obj=None):
        fields = ['name', 'age']
        if request.user.is_superuser:
            fields.append('verified')
        return fields

推荐阅读