【问题标题】:Permissions to edit certain fields in Django在 Django 中编辑某些字段的权限
【发布时间】:2020-02-26 18:05:13
【问题描述】:

我有两个不同的组可以访问 Django-Admin。他们可以查看模型中的所有字段,但不得编辑所有字段。例如,G1 可以编辑“price”和“ean”,而 G2 可以编辑“ean”和“detail”。

我尝试了here 给出的版本,但我也想限制模型对象详细视图中的可编辑性。

编辑: 目前,我正在尝试弄清楚如何在 ModelAdmin 中访问请求用户,因为我已经在模型的 Meta 中注册了“特殊字段权限”,并试图根据组修改 readonly_fields。知道如何获取用户吗?

【问题讨论】:

  • 考虑将您迄今为止尝试过的内容添加到原始问题中。如果您提供更多代码并要求我们进行调试,那么 SO 效果最好。我们无法为您提供代码。

标签: django


【解决方案1】:

我想出的解决方案是覆盖get_changelist和get_form:

def get_form(self, request, obj=None, **kwargs):
    fields = [$$$]  # Default fields for everyone
    if not has_group(request.user, $$$):  # Check if User IS NOT in group
        fields += [$$$]  # Add field that is associated with group to list
    self.readonly_fields = fields
    return super(YourAdminName, self).get_form(request, obj, **kwargs)

def get_changelist(self, request, **kwargs):
    fields = [$$$]  # Default fields for everyone
    if has_group(request.user, $$$):  # Check if User IS in group
        fields += [$$$]  # Add field that is associated with group to list
    self.list_editable = fields
    return super(YourAdminName, self).get_changelist(request, **kwargs)

【讨论】:

    猜你喜欢
    • 2015-08-05
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    相关资源
    最近更新 更多