2012-06-21 27 views
5

Tôi cần đăng nhập "chủ sở hữu" cho quản trị viên. Giả sử chúng ta có cấu trúc mô hình này:Quản trị viên Django - cho phép người dùng truy cập vào các đối tượng/trường cụ thể?

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) 

Chúng tôi có một nhóm được gọi là Owners mà một số người dùng tham gia. ProductPhotoTabularInline trên trang quản trị Product.

Bây giờ, chủ sở hữu cần sự cho phép để chỉnh sửa

  1. (Mục tiêu chính)chỉ sản phẩm mà product__in=user.products (vì vậy về cơ bản, chỉ có các sản phẩm thuộc sở hữu của họ).

  2. (mục tiêu thứ yếu)chỉ các mô tảảnh các sản phẩm

Làm thế nào tôi có thể làm điều này với hệ thống admin/sự cho phép của Django?

Trả lời

4

Đây là quyền mức hàng (hoặc đối tượng). Django cung cấp hỗ trợ cơ bản cho object permissions nhưng nó là vào bạn để thực hiện mã.

May mắn thay, có một vài ứng dụng cung cấp khung cấp phép đối tượng cấp độ thả xuống. django-guardian là cái tôi đã sử dụng trước đây. This page trên djangopackages.com cung cấp một số chi tiết mà bạn có thể thử.

+2

Thực tế - đây là trang djangopackages tốt hơn: http://www.djangopackages.com/grids/g/perms/ –

+0

Vâng, cảm ơn @andybak –

+0

Ah, cấp trường là những gì tôi cần bây giờ. Có cách nào để thực hiện điều này trên đầu trang của người giám hộ? Hay một khuôn khổ khác cung cấp điều này? – antihero

Các vấn đề liên quan