【发布时间】:2012-02-18 16:50:59
【问题描述】:
我希望在我的 Django 项目中获得更精细的权限,但无法决定使用哪个应用程序。 我所拥有的是这样的:
class Item(models.Model):
name = models.CharField(max_length=64, unique=True)
description = models.CharField(max_length=128, default='')
logo = ImageField(upload_to=/tmp, blank=True, null=True)
现在有了 Django 标准权限,我可以在添加、更改和删除之间进行选择,我想要的是扩展的更改权限,以提供仅授予组权限以更改徽标的能力,但不允许同一组来修改项目描述。我不希望或不需要用户进入关系,而只是为不同的组提供使用标准管理界面编辑模型的单个字段的可能性。我什至不确定我是否在谈论每个对象的权限?
有谁知道最好使用什么或我将如何自己实现它?我也可以想象有只读用户可以访问/阅读所有内容但无法修改,这也不可能。
感谢您的帮助。
【问题讨论】:
-
不,这些不是对象级权限。简短的回答:可能是可行的,但它有很多代码。长答案:你不能做你在香草 django 管理员中描述的事情。一种方法是将单独的 ModelAdmins 与启用的相关字段连接起来以分离 AdminSite 实例。我认为您可能必须将 AdminSite 子类化以使其检查您的组,并对每个组具有的权限进行硬编码 - django 的内置权限没有允许/不允许字段的概念。
-
非常感谢您的预期答复和确认。我期待实现单独的 AdminSite 子类来完成我的任务。
标签: django django-models django-admin django-permissions