管理员中的字段只读取依赖于用户

时间:2015-06-11 11:26:20

标签: python django django-admin

我试图让员工用户更改访问django管理员中他自己的用户记录,但也只能查看其他员工用户的记录。我可以通过在get_readonly_fields方法中定义字段来轻松完成此操作。但每当我向模型添加一个字段时,我也必须在那里添加它(如果我忘记了它的大麻烦)。

所以我试过这个(在SO处找到):

def get_readonly_fields(self, request, obj=None):
    my_readonly_fields= list(set([field.name for field in self.opts.local_fields] 

然而,这将使排除的字段重新出现(它始终显示只读字段的接缝),这是我不想要的。

有没有办法获得有效字段?我无法调用get_fields方法,因为它会尝试调用get_readonly_fields方法。或者通常有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

假设您没有使用ModelAdmin.get_fieldsModelAdmin.get_fieldsets来生成字段列表,您可以浏览self.fieldsself.fieldsets并从readonly_fields中排除{} {1}}列表。

具体做法是:

def get_readonly_fields(self, request, obj=None):
    my_readonly_fields = [
        field.name
        for field in self.opts.local_fields
        if field.name not in self.fields]

    return list(set(my_readonly_fields))