【问题标题】:How to Deny Permission to sub-user to edit only one field and only admin has control to access it...?如何拒绝子用户仅编辑一个字段并且只有管理员有权访问它的权限...?
【发布时间】:2019-12-11 23:09:22
【问题描述】:

这是我的 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 的记录,我必须拒绝所有用户使用该记录的权限,并且该记录只能由管理员使用。

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

【问题讨论】:

    标签: django django-models django-rest-framework django-templates django-views


    【解决方案1】:

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

    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
    

    【讨论】:

    • 我收到一个错误“get_fields() 需要 2 个位置参数,但给出了 3 个”
    • 对不起,我搞砸了方法定义,已修复
    • 再次,我得到一个错误“'bool' object is not callable”
    猜你喜欢
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    相关资源
    最近更新 更多