Djangoがすべてのモデルに同じ権限を追加するための便利な方法

Djangoに付属のcontrib.authライブラリには強力な管理機能があり、モジュールごとに追加、変更、削除の3つのデフォルトの権限が作成されます。ただし、すべてのモデルに同じ権限(読み取りなど)を追加したい場合は、どうすればよいですか?

各モデルのクラスMetaにアクセス許可を追加する場合は、すべてのモデルを変更して同じ行を追加する必要があり、メソッドが汚れすぎます。

ショートカットは、Django.contrib.authの1行を変更することです。ファイルパスはdjango \ contrib \ auth \ management \ __ init__。pyで、コードスニペットは次のとおりです。

def _get_all_permissions(opts):
    "Returns (codename, name) for all permissions in the given opts."
    perms = []
    for action in ('add', 'change', 'delete'):
        perms.append((_get_permission_codename(action, opts), u'Can %s %s' % (action, opts.verbose_name_raw)))
    return perms + list(opts.permissions)

この行に、次のような対応する権限を追加するだけです。

    ( 'add'、 'change'、 'delete')のアクションの場合:

への変更:

    ( 'read'、 'add'、 'change'、 'delete')のアクションの場合:

次に、python manage.py syncdbを実行すると、すべてのモデルの読み取り権限がauth_permissionテーブルの後に追加されていることがわかります。とても便利ですか?


モデルのカスタム権限を追加するには、公式ドキュメントを参照してください:https//docs.djangoproject.com/en/1.4/topics/auth/#custom-permissions

おすすめ

転載: blog.csdn.net/huzhenwei/article/details/8224753