关键字错误:在heroku上运行python的“skip_checks”manage.py迁移模式--共享

7kqas0il  于 2022-11-13  发布在  Python
关注(0)|答案(1)|浏览(149)

在Heroku中部署Django应用程序后,我运行如下命令:

heroku python manage.py migrate_schemas --shared

在DB中创建共享表,当使用多租户(Django-tenant-schemas)时,该迁移会抛出以下错误:
文件“/app/.heroku/python/lib/python3.10/站点包/租户架构/迁移执行程序/base.py”,第58行,运行迁移运行迁移中(自定义参数、自定义选项、自定义代码名称、公共模式名称)文件“/app/.heroku/python/lib/python3.10/站点包/租户模式/迁移执行程序/基础.py”,第31行,在运行迁移迁移命令中文件“/app/.heroku/python/lib/python3.10/site-packages/django/core/management/base.py”,第365行,在如果自身需要系统检查而不是选项['跳过检查']时执行:关键字错误:“skip_checks”
Django v = 3.0
如何修复此错误的想法?

1yjd4xko

1yjd4xko1#

我在升级到Django 4.1.1时遇到了同样的错误。经过努力,我找到了以下解决方案。您需要编写一个自定义命令来跳过检查:

from django_tenants.management.commands.migrate_schemas import Command as BaseCommand

class Command(BaseCommand):
    help = (
        "Updates database schema. Manages both apps with migrations and those without."
    )
    requires_system_checks = []
    
    def add_arguments(self, parser):
        super().add_arguments(parser)
        parser.add_argument(
            "--skip-checks",
            action="store_true",
            dest="skip_checks",
            default=False,
            help="Skip the checks.",
        )

把它放在一个python文件中,比如migrate_tenant_schemas.py,然后运行迁移步骤,调用:

python3 manage.py migrate_tenant_schemas

还要注意的是Django-tenant-schemas与Django的新版本不兼容,所以我不得不切换到更新的分支Django-tenants。希望这个答案能帮助一些人将他们的代码库更新到最新的Django版本。

相关问题