首页 > 解决方案 > 仅允许特定用户和超级用户编辑模型中的特定字段

问题描述

我有一个名为 test 的模型。

测试模型具有三个字段 - 问题、答案、已验证。

超级用户 - 管理员 User1- John User2- Darren

admin.py 文件

model = Test

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

此代码仅允许超级用户编辑已验证的记录。但我想要的是我必须授予某些用户编辑此字段的权限。

该字段应仅对 admin 和 john 可见,而对 Darren 不可见。Darren 将有权编辑模型中除此已验证字段之外的所有字段。

标签: djangodjango-modelsdjango-rest-framework

解决方案


您可以更改检查超级用户的行以添加您喜欢的任何条件。例如,如果您创建一个名为“admin”的组,此条件将允许分配到该组的用户也可以编辑“已验证”

    if request.user.is_superuser or request.user.groups.filter(name='admin').exists():
        fields.append('verified')

推荐阅读