这是我的情况:
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',
]
答案 0 :(得分:1)
user_permissions与权限(auth_permission表)具有多对多关系。组权限存储在auth_group_permission表中。
get_user_permissions(obj = None)
返回用户直接拥有的一组权限字符串。
get_group_permissions(obj = None)
通过用户组返回用户拥有的一组权限字符串。
get_all_permissions(obj = None)
通过组和用户权限返回用户拥有的一组权限字符串。