【问题标题】:Django admin - giving users access to specific objects/fields?Django admin - 允许用户访问特定对象/字段?
【发布时间】:2012-06-23 16:57:31
【问题描述】:

我需要为管理员创建一个“所有者”登录。假设我们有这个模型结构:

class Product(models.Model):
    owner = models.ManyToManyField(User)
    name = models.CharField(max_length=255)
    description = models.CharField(max_length=255)
    photos = models.ManyToManyField(Photo, through='ProductPhoto')


class Photo(models.Model):
    order = models.IntegerField()
    image = models.ImageField(upload_to='photos')
    alt = models.CharField(max_length=255)


class ProductPhoto(models.Model):
    photo = models.ForeignKey(Photo)
    product = models.ForeignKey(Product)

我们有一个名为Owners 的组,其中一些用户是其中的一部分。 ProductPhoto 是TabularInline 管理页面上的TabularInline。

现在,所有者需要获得编辑权限

  1. (主要目标) 仅限 product__in=user.products 的产品(所以基本上,只有他们拥有的产品)。

  2. (次要目标) 仅产品的描述和照片

我将如何使用 Django 的管理/权限系统来做到这一点?

【问题讨论】:

    标签: django django-admin django-permissions


    【解决方案1】:

    这是行(或对象)级别的权限。 Django 为object permissions 提供了基本支持,但代码的实现取决于您。

    幸运的是,有一些应用程序提供了嵌入式对象级权限框架。 django-guardian 是我以前用过的。 djangopackages.com 上的This page 提供了更多您可以尝试的内容。

    【讨论】:

    • 其实 - 这是一个更好的 djangopackages 页面:djangopackages.com/grids/g/perms
    • 啊,我现在也需要字段级别。有没有办法在监护人之上实现这一点?还是其他框架提供这个?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 2021-05-14
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 2022-09-30
    相关资源
    最近更新 更多