Django - предоставление пользовательских разрешений пользователю - PullRequest
2 голосов
/ 02 февраля 2012

У меня есть модель профиля пользователя с пользовательским разрешением, определенным следующим образом:

class Profile(models.Model):

    # A few profile fields here...

    class Meta:
        permissions = (
            ('can_approve', _(u'Can review and approve new accounts')),
        )

Когда я на самом деле смотрю на объекты профиля на сайте администратора Django, я не вижу способа на самом деле предоставитьэто разрешение для пользователей.

Какой самый простой способ сделать это?(например, дать пользователю Джо разрешение «can_approve»?)

1 Ответ

6 голосов
/ 02 февраля 2012

Добавление разрешения в Meta недостаточно для его просмотра в админ-панели. Разрешения, определенные в Meta, используются только для создания Разрешения в таблице auth_permission, когда вы запускаете manage.py syncdb.

Попробуйте запустить syncdb, либо добавьте разрешение вручную в базу данных, либо создайте разрешение из кода. После того, как он добавлен в БД, он будет виден в админ-панели.

from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType

content_type = ContentType.objects.get(app_label='myapp', model='Profile')
permission = Permission.objects.create(codename='can_approve',
                                   name=_(u'Can review and approve new accounts'),
                                   content_type=content_type)
...