【发布时间】:2015-03-29 09:40:52
【问题描述】:
我正在尝试使用迁移自动创建具有权限的 auth.Group。我的问题是,当我在空数据库上运行迁移时,尝试将权限附加到组的迁移找不到权限。如果我以较早的迁移为目标,以便迁移退出而不会出现错误,则权限会出现在数据库中,之后迁移代码可以找到权限。那么,当迁移背靠背运行时,我该怎么做才能让迁移引用在早期迁移中创建的权限?
def load_data(apps, schema_editor):
Permission = apps.get_model('auth', 'Permission')
Group = apps.get_model('auth', 'Group')
can_add = Permission.objects.get(codename='add_game')
developers = Group.objects.create(name='Developer')
developers.permissions.add(can_add)
developers.save()
class Migration(migrations.Migration):
dependencies = [
('myApp', '0004_game'),
]
operations = [
migrations.RunPython(load_data),
]
游戏模型是在较早的迁移中创建的。当我在空数据库上运行其他迁移时,此代码总是会导致错误,指出权限匹配查询不存在。 我正在使用 python 3.4 和 django 1.7.2
【问题讨论】:
-
是
add_game权限在0004_game迁移中创建的吗? -
这是为每个模型(添加、更改、删除)创建的默认权限之一。如果迁移目标为
0004_game,它会在0004_game的数据库中创建,但如果所有迁移都在空数据库上连续运行,则0005 迁移找不到权限。
标签: python django permissions migration