重命名django自定义权限

重命名django自定义权限,django,django-models,django-migrations,django-permissions,Django,Django Models,Django Migrations,Django Permissions,我正在使用django 2.0应用程序,并将django版本更新为3.0。 但是在我的项目中,很少有像查看\ u modelname这样的自定义权限 class MyConcreteModel(models.Model): model_field_1 = models.CharField(max_length=100, blank=False) # other fields class Meta: permissions = ( (

我正在使用django 2.0应用程序,并将django版本更新为3.0。 但是在我的项目中,很少有像查看\ u modelname这样的自定义权限

class MyConcreteModel(models.Model):
    model_field_1 = models.CharField(max_length=100, blank=False)
    # other fields
    class Meta:
        permissions = (
            ("view_myconcretemodel", "Can see available device interfaces"),
        )      
在Django3中(从v2.1开始),这种权限是默认的。所以我和权限名有冲突

现在,我正在尝试在更新django版本之前重命名自定义权限

class MyConcreteModel(models.Model):
    model_field_1 = models.CharField(max_length=100, blank=False)
    # other fields
    class Meta:
        permissions = (
            ("user_view_myconcretemodel", "User can see available device interfaces"),
        )      
迁移后,在DB中创建了“新建”(具有新名称)权限。但是旧权限仍然存在,所有用户都有旧权限(使用旧名称,如查看\u myconcretemodel)。显然,我需要所有用户的“新建”权限


是否可以简单地重命名权限或向相关用户授予“新”权限(根据“旧”权限),并自动执行此操作?

在阅读了如何以编程方式创建权限之后

我的解决方案是在
Permission
模型中修改
codename
。i、 e

from django.contrib.auth.models import Permission

perm = Permission.objects.get(codename="view_myconcretemodel") #old name
perm.codename = "user_view_myconcretemodel" #new name
perm.save()