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