gpt4 book ai didi

python - 如何在django中检索特定模型的所有权限?

转载 作者:行者123 更新时间:2023-12-02 15:56:28 25 4
gpt4 key购买 nike

默认情况下,每个 django 模型都有 3 个权限(添加、更改、删​​除)。在模型中,我可以定义自定义权限以添加更多内容。

class Company(models.Model):
owner = models.ForeignKey(User)
name = models.CharField(max_length=64, unique=True)
description = models.TextField(max_length=512)
created_on = models.DateTimeField(auto_now_add=timezone.now)

class Meta:
permissions = (
("erp_view_company", "Can see the company information"),
("erp_edit_company", "Can edit the company information"),
("erp_delete_company", "Can delete the company"),
)

迁移时,这些权限会在数据库级别自动创建。如何从模型中检索所有权限?

# retrieves the permissions
permissions = Permission.objects.filter(get_all_permissions_of_model_Company)
# adds permissions to group
group = Group.objects.create(name='foo', permissions=permissions)
# adds user to group
user.groups.add(group)

最佳答案

我建议你这样做:

all_permissions = Permission.objects.filter(content_type__app_label='app label', content_type__model='lower case model name')

检索模型的app_label:

Company._meta.app_label

检索模型的小写名称:

Company._meta.model_name

此外,您还可以retrieve a ContentType instance representing a model :

ContentType.objects.get_for_model(Company)

由于ContentType使用缓存,所以这是完全可以接受的。因此,还有另一种方法可以实现您的需求:

content_type = ContentType.objects.get_for_model(Company)
all_permissions = Permission.objects.filter(content_type=content_type)

关于python - 如何在django中检索特定模型的所有权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38391729/

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