5

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

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上的一个。Product

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

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

  2. (次要目标) 只有产品的描述照片

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

4

1 回答 1

4

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

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

于 2012-06-21T13:07:23.357 回答