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

ant*_*ero 5 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)
Run Code Online (Sandbox Code Playgroud)

我们有一个组称为Owners某些用户是其中的一部分.这ProductPhoto是管理页面TabularInline上的一个Product.

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

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

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

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

Bur*_*lid 4

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

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

  • 实际上 - 这是一个更好的 djangopackages 页面:http://www.djangopackages.com/grids/g/perms/ (3认同)