Django admin-将所有字段设为只读
我试图使所有字段为只读,而不明确列出它们。
就像是:
class CustomAdmin(admin.ModelAdmin): def get_readonly_fields(self, request, obj=None):
if request.user.is_superuser:
return self.readonly_fields
return self.fields
目前CustomAdmin.fields
尚未设置问题。
回答:
小心,self.model._meta.fields
不一定与CustomAdmin具有相同的字段!
“管理员的所有字段”看起来像这样:
from django.contrib import adminfrom django.contrib.admin.utils import flatten_fieldsets
class CustomAdmin(admin.ModelAdmin):
def get_readonly_fields(self, request, obj=None):
if request.user.is_superuser:
return self.readonly_fields
if self.declared_fieldsets:
return flatten_fieldsets(self.declared_fieldsets)
else:
return list(set(
[field.name for field in self.opts.local_fields] +
[field.name for field in self.opts.local_many_to_many]
))
以上是 Django admin-将所有字段设为只读 的全部内容, 来源链接: utcz.com/qa/430978.html