eclipse Django -管理工具中缺少某些权限

jpfvwuh4  于 2023-11-18  发布在  Eclipse
关注(0)|答案(2)|浏览(139)

我不太确定这是怎么回事。我在eclipse中使用Django。我创建了一个新的django项目,并将以前django项目的代码复制到这个项目中。我运行syncdb来设置数据库。我去管理页面重新创建我的组,但我注意到可用权限列表中缺少一些权限。在以前的项目中,有一个允许我“访问”配置文件的权限。在这个项目中,该权限不在列表中,但它也是我需要的权限。它去了哪里?

ukqbszuj

ukqbszuj1#

它去哪了?
当您通过删除表并运行syncdb来增量地更改数据库时,应用程序表的PK会反映在auth_permission表中。
如果可以避免的话,不要做“增量”手术。
1.提取数据。
1.丢掉你的数据库。
1.重新运行syncdb以重建它。
1.删除您的数据。
你会更快乐的

mzmfm0qo

mzmfm0qo2#

这个问题出现在搜索为什么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(...)
    ]

字符串
非常感谢链接的博客文章,所有的功劳都归于Magesh Ravi(作者)!
对于这个问题,我想知道原始项目中的数据迁移步骤之一是否包括这一步骤,但后来的一个没有,所以有一些权限,但不是全部。

相关问题