限制(许可)Django员工用户更改模型的某些字段

时间:2015-05-23 13:20:25

标签: python django python-2.7 permissions django-admin

假设我有一个博客模型

class Blog(models.Model):
    author = models.ForeignKey(User)
    title = models.CharField(max_length=250, unique=True)
    body = models.TextField()

我有一个模型管理员,可以确保哪个用户可以更改哪个博客:

class BlogAdmin(admin.ModelAdmin):

    def has_add_permission(self, request):
        return request.user.groups.filter(name='author').exists()

    def has_change_permission(self, request, obj=None):
        return request.user.groups.filter(name='editor').exists() or (request.user.groups.filter(name='author').exists() and Blog.objects.filter(pk=obj, author=request.user).count() >0 )

    def has_delete_permission(self, request, obj=None):
        return request.user.groups.filter(name='editor').exists() or (request.user.groups.filter(name='author').exists() and Blog.objects.filter(pk=obj, author=request.user).count() >0 )

但是我想限制一组用户更改Blog模型的字段,说“作者”组不能通过管理面板更改作者的字段。

我该怎么做?谢谢你。

1 个答案:

答案 0 :(得分:2)

我想我找到了办法。我可以覆盖save_model的{​​{1}}方法并执行以下操作...

ModelAdmin