2013-12-03 3 views
15

Django 1.5, Python 2.6Джанго - набор прав доступа пользователя, когда пользователь автоматически создается

модель автоматически создает пользователя при определенных условиях:

User.objects.get_or_create(username=new_user_name, is_staff=True) 
u = User.objects.get(username=new_user_name) 
u.set_password('temporary') 

В дополнение к настройке имя пользователя, пароль и is_staff статус, я хотел бы установить права доступа пользователя - что-то вроде:

u.user_permissions('Can view poll') 

или

u.set_permissions('Can change poll') 

Возможно ли это? Спасибо!

ответ

28

Используйте add and remove методы: Ответ

permission = Permission.objects.get(name='Can view poll') 
u.user_permissions.add(permission) 
24

Alko в выше корректна, но не включает оператор импорта.

from django.contrib.auth.models import Permission 
permission = Permission.objects.get(name='Can view poll') 
u.user_permissions.add(permission) 
8

Ответы Эндрю М. Фаррелла верны. Я только добавляю использование get_user_model() и полный пример.

from django.contrib.auth import get_user_model 
from django.contrib.auth.models import Permission 
u = get_user_model().get(username=new_user_name) 

Чтобы получить разрешение, вы можете использовать

permission = Permission.objects.get(name='Can view poll') 

или

permission = Permission.objects.get(codename='can_view_poll') 

затем добавить его в пользовательских разрешений набор

u.user_permissions.add(permission) 
Смежные вопросы