Django权限

tin*_*nti 7 django django-models django-admin django-permissions

我希望在我的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)
Run Code Online (Sandbox Code Playgroud)

现在有了Django标准权限,我有可能在添加,更改和删除之间做出选择,我想要的是扩展更改权限,例如,只提供组权限以更改徽标,但禁止同一组修改项目描述.我不想或不需要用户输入关系,而只是让不同的组可以使用标准管理界面编辑模型的单个字段.我甚至不确定我是否在谈论每个对象的许可?

有谁知道最好用什么或我自己如何实现它?我还可以设想让只读用户能够访问/读取所有内容但无法修改,这两者都不可能.

谢谢你的帮助.

sel*_*ler 7

最灵活的方式是:

  1. 写一些自定义权限(即can_modify_descr)
  2. 写你自己的FormsModelForms
  3. 写视图以呈现指定的表单.
  4. 最后你必须覆盖一些django管理模板,并在扩展一些标准django管理模板的模板中呈现你的表单.

据我所知,这是实现你想要的唯一方法,但也需要很多工作.