Django管理员 - 让用户访问特定的对象/字段?

时间:2012-06-21 12:46:00

标签: django django-admin django-permissions

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

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的群组,有些用户参与其中。 ProductPhotoTabularInline管理页面上的Product

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

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

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

    < / LI>

    如何使用Django的管理/权限系统执行此操作?

1 个答案:

答案 0 :(得分:4)

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

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