我完全迷失了,希望能够清楚一点。
Django文档(特别是docs.djangoproject.com和djangobook.com)广泛讨论了如何以编程方式检索权限以及测试用户的权限,但我找不到的是提到权限的最基本用途之一在文档中:控制管理界面的每个模型(不每个对象,只是模型)权限。
假设我有一个名为Book的模型。我希望所有员工用户能够在管理界面中编辑任何书籍对象。作为一个复杂的附加层,我使用Django-nonrel(使用djangotoolbox和django-permission-backend-nonrel)。
我使用管理界面的“权限”部分为图书类型创建了一个名为change_book的权限。但是,我的测试用户(is_staff但不是is_superuser)只会在管理登录页面中看到通用消息“您无权编辑任何内容”。我可以看到用于设置/取消设置用户权限的框,但是当我选择新权限并单击“保存”时,就我所知,该权限不会附加到用户。
我具体说明了该权限以及如何将其附加给用户?
更新:这是settings.py
的相关部分:
from djangoappengine.settings_base import *
import os
DEBUG = True
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# Activate django-dbindexer for the default database
DATABASES['native'] = DATABASES['default']
DATABASES['default'] = {'ENGINE': 'dbindexer', 'TARGET': 'native'}
AUTOLOAD_SITECONF = 'indexes'
AUTHENTICATION_BACKENDS = (
'permission_backend_nonrel.backends.NonrelPermissionBackend',
)
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.messages',
'django.contrib.sessions',
'django.contrib.staticfiles',
'djangotoolbox',
'permission_backend_nonrel',
'dbindexer',
'library',
# djangoappengine should come last, so it can override a few manage.py commands
'djangoappengine',
)
MIDDLEWARE_CLASSES = (
# This loads the index definitions, so it has to come first
'autoload.middleware.AutoloadMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
AUTH_USER_MODEL = 'library.User'
答案 0 :(得分:0)
您可以使用默认的django权限机制,并将用户用作外键。
然后,您可以为用户选择书籍模型的“可以更改”。