为什么user_permissions不返回任何东西?

时间:2020-04-11 17:48:58

标签: django python-3.x django-models django-rest-framework

这是我的情况:

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 个答案:

答案 0 :(得分:1)

user_permissions与权限(auth_permission表)具有多对多关系。组权限存储在auth_group_permission表中。

get_user_permissions(obj = None)

返回用户直接拥有的一组权限字符串。

get_group_permissions(obj = None)

通过用户组返回用户拥有的一组权限字符串。

get_all_permissions(obj = None)

通过组和用户权限返回用户拥有的一组权限字符串。

相关问题