Python 如何在现有Django项目中批量分配模型级权限?

Python 如何在现有Django项目中批量分配模型级权限?,python,django,Python,Django,我需要开始在现有的基于Django的web服务中使用模型级权限。我想添加的权限类型是django admin的默认类型(“添加”、“更改”、“删除”),并且已经存在(我可以在admin中看到它们) 我已经有很多用户在数据库中,所以手动权限分配是不可能的 如何为我的应用程序中的每个现有用户和未来用户自动分配模型子集的这些权限?您可以使用“获取”或“创建”方法使用组来完成此操作,如下面的代码所示: from django.contrib.auth.models import Group, Permi

我需要开始在现有的基于Django的web服务中使用模型级权限。我想添加的权限类型是django admin的默认类型(“添加”、“更改”、“删除”),并且已经存在(我可以在admin中看到它们)

我已经有很多用户在数据库中,所以手动权限分配是不可能的


如何为我的应用程序中的每个现有用户和未来用户自动分配模型子集的这些权限?

您可以使用“获取”或“创建”方法使用组来完成此操作,如下面的代码所示:

from django.contrib.auth.models import Group, Permission, User
from django.contrib.contenttypes.models import ContentType

content_type = ContentType.objects.get_for_model(User)
add_permission = Permission.objects.get(content_type=content_type,codename='add_user')
change_permission = Permission.objects.get(content_type=content_type,codename='change_user')
delete_permission = Permission.objects.get(content_type=content_type,codename='delete_user')

group, created = Group.objects.get_or_create(name='your_group')
if created: #assign permission to all users in database
    group.permissions.add(add_permission, change_permission, delete_permission)
    for user in User.objects.all():
        user.groups.add(group)
这样,如果尚未创建组,则可以创建组,将数据库中的所有用户添加到组中,并添加所需的权限。此外,对于要添加这些权限的每个新用户,都应将其添加到组中,以便继续创建以下代码:

 groupGroup.objects.get(name='your_group')
 user.groups.add(group)

有关文档,请单击

您可以使用“组”来完成,使用“获取”或“创建”方法,如下面的代码:

from django.contrib.auth.models import Group, Permission, User
from django.contrib.contenttypes.models import ContentType

content_type = ContentType.objects.get_for_model(User)
add_permission = Permission.objects.get(content_type=content_type,codename='add_user')
change_permission = Permission.objects.get(content_type=content_type,codename='change_user')
delete_permission = Permission.objects.get(content_type=content_type,codename='delete_user')

group, created = Group.objects.get_or_create(name='your_group')
if created: #assign permission to all users in database
    group.permissions.add(add_permission, change_permission, delete_permission)
    for user in User.objects.all():
        user.groups.add(group)
这样,如果尚未创建组,则可以创建组,将数据库中的所有用户添加到组中,并添加所需的权限。此外,对于要添加这些权限的每个新用户,都应将其添加到组中,以便继续创建以下代码:

 groupGroup.objects.get(name='your_group')
 user.groups.add(group)

对于文档,请单击

,这样它应该是某种自定义脚本或迁移?那么它应该是某种自定义脚本或迁移?