2012-06-21 13 views
5

Yönetici için "sahipler" giriş yapmam gerekiyor.Django admin - kullanıcılara belirli nesnelere/alanlara erişim vermek?

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) 

Biz bir grup bazı kullanıcılar parçası olan Owners denilen var: Biz bu model yapıya sahip varsayalım. ProductPhoto, Product yönetici sayfasında TabularInline'dur.

Şimdi, sahipleri product__in=user.products (yani temelde, sadece ürünler kendilerine ait) nerede

  1. (birincil hedef)sadece ürünlerini düzenlemek için izin gerekir.

  2. (ikincil hedef)sadeceaçıklama ve fotoğraflar ürünlerin Ben Django'nın admin/izin sistemi ile bu yapardın Nasıl

arasında?

cevap

4

Bu, satır (veya nesne) düzeyi iznidir. Django, object permissions için temel destek sağlar, ancak kodu uygulamak size kalmıştır.

Neyse ki, açılan nesne düzeyinde izin çerçevesi sağlayan birkaç uygulama var. django-guardian, daha önce kullanmış olduğum bir tanesi. Djangopackages.com adresindeki This page, deneyebileceğiniz daha fazlasını sunar.

+2

Aslında - bu daha iyi bir djangopackages sayfası: http://www.djangopackages.com/grids/g/perms/ –

+0

Yep, teşekkürler @andybak –

+0

Ah, şimdi de ihtiyacım olan alan seviyesi. Bunu koruyucunun üstüne yerleştirmenin bir yolu var mı? Ya da başka bir çerçeve bunu sağlıyor mu? – antihero