Почему user_permissions не возвращает ничего? - PullRequest
2 голосов
/ 11 апреля 2020

Вот мой сценарий:

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

user = get_user_model().objects.create(email='example@google.com')


group = Group.objects.create(name='group1')
content_type = ContentType.objects.get(
    app_label=get_user_model()._meta.app_label, 
    model=get_user_model()._meta.model_name
)
permission = Permission.objects.create(
    name='perm1', 
    codename='perm1', 
    content_type=content_type
)

group.permissions.add(permission)
user.groups.add(group)

Вопрос: Так почему этот запрос не дал результатов:

user.user_permissions.all()

Вывод

<QuerySet []>

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

1 Ответ

1 голос
/ 11 апреля 2020

user_permissions - это отношение «многие ко многим» к Permission (таблица auth_permission). Групповые разрешения хранятся в таблице auth_group_permission.

get_user_permissions (obj = Нет)

Возвращает набор строк разрешений, которые пользователь имеет непосредственно.

get_group_permissions (obj = Нет )

Возвращает набор строк разрешений, которые пользователь имеет, через свои группы.

get_all_permissions (obj = Нет)

Возвращает набор строк разрешений, которые имеет пользователь, как через групповые, так и пользовательские разрешения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...