1

私はDjangoAdminToolを使用しており、非常に単純なモデルを使用しています。特定のユーザーまたは特定のグループの特定のパスワードへのアクセスを制限したい。アクセスの3つの条件を「はい/いいえ/しない」にするにはどうすればよいですか。ユーザーが「はい」+「グループいいえ」の場合はアクセスできますが、「はい」+「しない」の場合はアクセスできません。そして、どうすればdjango-admin-toolsパーミッションシステムで動作させることができますか?

from django.db import models
from passwords.objects.labels.models import Label

class Password(models.Model):
    class Meta:
        db_table = 'passwords'

    name = models.CharField(max_length=32)
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=32)
    labels = models.ManyToManyField(Label)

    def __unicode__(self):
        return self.name
4

2 に答える 2

1

デフォルトでは、django はクラス レベルのパーミッション (つまり、tableに対するパーミッション) のみをサポートしています。

オブジェクト レベル (行レベル) のアクセス許可がサポートされていますが、django にはそのままでは実装されていません。

オブジェクト レベルの権限

オブジェクトごとのレベルで権限を指定するための基盤が追加されました。コアにはこれの実装はありませんが、カスタム認証バックエンドはこの実装を提供でき、django.contrib.auth.models.User によって使用されます。詳細については、認証ドキュメントを参照してください。

したがって、この機能を有効にするdjango-guardianなどのサードパーティ製アプリがあります。

于 2012-05-24T20:25:46.560 に答える
0

has_add_permission管理者と一緒に作業しているので、 の、has_change_permissionおよびhas_delete_permissionメソッドをオーバーライドできますModelAdmin。ただし、「はい/いいえ/しない」権限がユーザー/グループにどのように関連付けられているかを知らなければ、これ以上あなたを助けることはできません.

アップデート

ばかばかしいほど単純にしたい場合は、「PasswordAccess」などのグループを作成するのが最善の方法です。次に、必要なすべてのユーザーをそのグループに割り当て、デフォルトの追加、変更、および削除のアクセス許可のみをそのグループに割り当てますPassword

他に必要なものはありません。そのグループに追加されたユーザーは、 のアクセス許可を自動的に継承しPasswordます。他のユーザーはそれらのアクセス許可を持っていないため、管理者にも表示されません。

于 2012-05-24T20:41:15.410 に答える