gpt4 book ai didi

python - 如何在 django 中为 User 模型添加自定义权限?

转载 作者:IT老高 更新时间:2023-10-28 21:04:13 30 4
gpt4 key购买 nike

默认情况下,在 django 中,当安装了 django.contrib.auth 运行 syncdb 时,它会在每个模型上创建默认权限...例如 foo.can_change 、 foo.can_delete 和 foo.can_add。要为模型添加自定义权限,可以在模型下添加类 Meta: 并在此处定义权限,如此处所述 https://docs.djangoproject.com/en/4.1/topics/auth/customizing/#custom-permissions

我的问题是,如果我想向 User 模型添加自定义权限,我应该怎么做?像 foo.can_view。我可以使用以下代码片段来做到这一点,

ct = ContentType.objects.get(app_label='auth', model='user')
perm = Permission.objects.create(codename='can_view', name='Can View Users',
content_type=ct)
perm.save()

但我想要一些可以很好地与 syncdb 配合使用的东西,例如我的自定义模型下的 Meta 类。我是否应该将这些放在 Meta: 类中,在 UserProfile 下,因为这是扩展用户模型的方式。但这是正确的方法吗?这不会将它与 UserProfile 模型联系起来吗?

最佳答案

你可以这样做:

在 Django 应用的 __init__.py 中添加:

from django.db.models.signals import post_syncdb
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth import models as auth_models
from django.contrib.auth.models import Permission

# custom user related permissions
def add_user_permissions(sender, **kwargs):
ct = ContentType.objects.get(app_label='auth', model='user')
perm, created = Permission.objects.get_or_create(codename='can_view', name='Can View Users', content_type=ct)
post_syncdb.connect(add_user_permissions, sender=auth_models)

关于python - 如何在 django 中为 User 模型添加自定义权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7724265/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com