2012-06-21 100 views
5

我需要爲管理員創建一個「所有者」登錄名。假設我們有這樣的模型結構:Django管理員 - 讓用戶訪問特定的對象/字段?

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一些用戶的一部分。 ProductPhotoProduct管理頁面上的TabularInline

現在,業主需要修改權限

  1. (主要目標)產品,其中product__in=user.products(所以基本上,只有產品他們所擁有)。

  2. (第二個目標)描述照片的產品

我將如何做到這一點與Django的管理/許可制度

回答

4

這是行(或對象)級別的權限。 Django提供對object permissions的基本支持,但由您來實現代碼。

幸運的是,有幾個應用程序提供了插入對象級權限框架。 django-guardian是我以前用過的。 djangopackages.com上的This page提供了一些您可以嘗試的方法。

+2

其實 - 這是一個更好的djangopackages頁面:http://www.djangopackages.com/grids/g/perms/ –

+0

是的,謝謝@andybak –

+0

啊,現場級別是我現在需要的。有沒有一種方法可以在監護人之上實施?還是另一個框架提供了這個? – antihero

相關問題