重命名django自定义权限
我正在使用django 2.0应用程序,并将django版本更新为3.0。 但是在我的项目中,很少有像查看\ u modelname这样的自定义权限重命名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 = ( (
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()