【问题标题】:Why user_permissions does not return any thing?为什么 user_permissions 不返回任何东西?
【发布时间】:2020-07-24 10:30:25
【问题描述】:

这是我的场景:

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',
]

【问题讨论】:

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


    【解决方案1】:

    user_permissions 与 Permission(auth_permission 表)是多对多关系。存储在 auth_group_permission 表中的组权限。

    get_user_permissions(obj=None)

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

    get_group_permissions(obj=None)

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

    get_all_permissions(obj=None)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      相关资源
      最近更新 更多