用Django搭建web,我们可以发现它已经提供了一个admin的管理系统。
但是在分配权限的时候,只有change、add、delete三种权限,也就是说任一登录管理界面的用户,都有修改数据的风险,所以我们需要添加一种只读用户,他可以登录后台页面进行数据的查看,但是不会对数据进行修改。
class CustomModelAdmin(admin.ModelAdmin):
# 对于非超级用户,去除 “动作” 功能一栏
def get_actions(self, request):
actions = super(CustomModelAdmin, self).get_actions(request)
if request.user.is_superuser:
return actions
actions = None
return actions
def get_readonly_fields(self, request, obj=None):
if request.user.is_superuser:
return self.readonly_fields
# get all fields as readonly
# self.model._meta.fields 获取普通的字段
# obj._meta.many_to_many 获取外键、多对多、一对一这些字段
fields = [f.name for f in self.model._meta.fields] + \
[field.name for field in obj._meta.many_to_many]
return fields