在Django中设置每个模型的权限

时间:2015-06-12 01:00:23

标签: django permissions django-nonrel

我完全迷失了,希望能够清楚一点。

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'

1 个答案:

答案 0 :(得分:0)

您可以使用默认的django权限机制,并将用户用作外键。

然后,您可以为用户选择书籍模型的“可以更改”。