Django 1.11-向生产中的现有用户添加权限

时间:2019-03-08 01:41:05

标签: django django-models

问题

我有一个正在生产中的用户数据库,并且正在某些模型中创建新权限。现在,我需要根据条件向某些用户添加这些权限。我应该怎么做?我是否应该向迁移中添加代码以检查所有用户并相应地向他们添加权限?

1 个答案:

答案 0 :(得分:0)

您可以创建一个DataMigration

这允许您运行常规迁移,然后应用一些逻辑(最好使用python代码)对数据库记录进行一些更改。

示例:

from django.db import migrations, models

def my_data_migration_code(apps, schema_editor):
    my_model = apps.get_model('your_app', 'MyModel')
    for instance in my_model.objects.all():
        instance.name = instance.name + ' wow'
        instance.save()

class Migration(migrations.Migration):
dependencies = [
    ('your_app', '0050_auto_20190207_1156'),
]

operations = [
    migrations.AddField(
        model_name='MyModel',
        name='blabla',
        field=models.BooleanField(default=True),
    ),
    migrations.RunPython(my_data_migration_code)
]