我试图让员工用户更改访问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方法。或者通常有更好的方法吗?
答案 0 :(得分:0)
假设您没有使用ModelAdmin.get_fields
或ModelAdmin.get_fieldsets
来生成字段列表,您可以浏览self.fields
或self.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))