Django默认没有只读权限,只能自己实现。查看了大量的资料,总算搞定了。
- 修改admin.py
from django.contrib.admin.util import flatten_fieldsets #引入类
class GconfAdmin(admin.ModelAdmin):
list_display=(‘mailserver‘,‘mailsender‘,‘mail_on_off‘,‘sms_on_off‘)
#搜索字段
search_fields=(‘mailserver‘,‘mailsender‘,‘mail_on_off‘,‘sms_on_off‘)
def get_readonly_fields(self,request,obj=None):
if not request.user.is_superuser and request.user.username==‘readonly‘:
return [f.name for f in self.model._meta.fields]
return self.readonly_fields
在Admin类中新增红色部分
- root用户登录django界面,新建readonly用户,并赋予change权限即可(用户必须有change权限)
此方法有个缺点就是每个mymodelAdmin类都需要添加get_readonly_fields函数
优化方法:
在在项目app下创建custom_model_admin.py
from django.contrib import admin
from django.contrib.admin.util import flatten_fieldsets
class CustomModelAdmin(admin.ModelAdmin):
def get_readonly_fields(self,request,obj=None):
if not request.user.is_superuser and request.user.username==‘readonly‘:
return [f.name for f in self.model._meta.fields]
return self.readonly_fields
在admin.py 中引用这个类
from myapp.custom_model_admin import CustomModelAdmin
将admin.ModelAdmin替换成CustomModelAdmin 即可