2012-06-21 18 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 है।

अब, मालिकों अनुमति की जरूरत है, जहां product__in=user.products (ताकि मूल रूप से, जिनके वे स्वामी केवल उत्पादों)

  1. (प्राथमिक लक्ष्य)केवल उत्पादों संपादित करने के लिए।

  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