2012-06-21 9 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と呼ばれるがあります。私たちはこのモデルの構造を持っていると言います。 ProductPhotoは、Product管理ページのTabularInlineです。

は今、所有者は

  1. (第一の目標)product__in=user.products(そう基本的に、彼らが所有している製品のみ)のみ製品を編集する権限が必要です。

  2. (第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