Django管理员:限制员工更新

Django管理员:限制员工更新,django,django-admin,Django,Django Admin,我有一个博客模型。所有新的博客文章都有DRAFT状态 在admin页面中,admin将是博客模型上的所有权限(CRUD)。我可以使用Django的register方法来解决这个问题 我想要的是是\u员工用户可以查看所有博客文章,但不能更新状态(例如从草稿到批准) 有没有办法检查请求的组,然后允许用户更新或不更新?谢谢。最简单的解决方案是在admin类中将状态字段标记为只读,方法是设置: 从django.contrib导入管理 从.models导入BlogPost @管理员注册(BlogPost

我有一个
博客模型
。所有新的博客文章都有
DRAFT
状态

在admin页面中,admin将是
博客模型
上的所有权限(CRUD)。我可以使用Django的
register
方法来解决这个问题

我想要的是
是\u员工
用户可以查看所有
博客文章
,但不能更新状态(例如从
草稿
批准


有没有办法检查
请求的
组,然后允许用户更新或不更新?谢谢。

最简单的解决方案是在admin类中将
状态
字段标记为只读,方法是设置:


从django.contrib导入管理
从.models导入BlogPost
@管理员注册(BlogPost):
类BlogPostAdmin(admin.ModelAdmin):
只读_字段=('status',)
请注意,这使得所有管理员用户的
状态为只读。如果您需要基于当前用户的更细粒度的控制,那么有一种方法可以重写

此外,由于Django Admin的所有用户都有
is_人员
,因此我们将明确检查是否存在错误

类BlogPostAdmin(admin.ModelAdmin):
def get_readonly_字段(self、request、obj=None):
#如果要创建新的BlogPost或BlogPost实例,则obj为None
#如果我们正在编辑现有的博客文章
如果没有,则request.user.has\u perm(“您的应用程序更改\u blogpost”):
返回(“状态”,)
返回[]

感谢您的快速回复!我要试试你的解决办法。