这个问题出现在搜索为什么django在数据迁移过程中给我一个“Permission not Found”错误,当我创建一个新的数据库示例时,它会创建我的默认权限组。 对我来说,答案与在“迁移后信号”步骤中如何创建权限有关。因此,当逐步构建迁移时,会发出创建权限的信号。但是,当重建数据库时,直到最终迁移成功完成时才会发出此信号。因此,如果您的数据迁移之一引用权限,则会收到我遇到的错误。具体而言,我们的数据模型在开发过程中发生了重大变化,因此我们清除了迁移,复制了数据迁移,并发布了migrate 这里有一个很好的讨论:https://www.webinative.com/blog/django-permission-not-found-error/ 解决方案是在数据迁移需要权限之前强制创建权限。
from django.db import migrations
from django.contrib.auth.management import create_permissions
def force_create_permissions(apps, schema_editor):
""" creates permissions without waiting for post_migrate signal """
for app_config in apps.get_app_configs():
app_config.models_module = True
create_permissions(app_config, apps=apps, verbosity=0)
app_config.models_module = None
[ the rest of your data migration logic...]
class Migration(migrations.Migration):
dependencies = [
(...),
]
operations = [
migrations.RunPython(force_create_permissions),
migrations.RunPython(...)
]
2条答案
按热度按时间ukqbszuj1#
它去哪了?
当您通过删除表并运行syncdb来增量地更改数据库时,应用程序表的PK会反映在
auth_permission
表中。如果可以避免的话,不要做“增量”手术。
1.提取数据。
1.丢掉你的数据库。
1.重新运行syncdb以重建它。
1.删除您的数据。
你会更快乐的
mzmfm0qo2#
这个问题出现在搜索为什么django在数据迁移过程中给我一个“Permission not Found”错误,当我创建一个新的数据库示例时,它会创建我的默认权限组。
对我来说,答案与在“迁移后信号”步骤中如何创建权限有关。因此,当逐步构建迁移时,会发出创建权限的信号。但是,当重建数据库时,直到最终迁移成功完成时才会发出此信号。因此,如果您的数据迁移之一引用权限,则会收到我遇到的错误。具体而言,我们的数据模型在开发过程中发生了重大变化,因此我们清除了迁移,复制了数据迁移,并发布了
migrate
这里有一个很好的讨论:https://www.webinative.com/blog/django-permission-not-found-error/
解决方案是在数据迁移需要权限之前强制创建权限。
字符串
非常感谢链接的博客文章,所有的功劳都归于Magesh Ravi(作者)!
对于这个问题,我想知道原始项目中的数据迁移步骤之一是否包括这一步骤,但后来的一个没有,所以有一些权限,但不是全部。