KeyError: 'skip_checks' on heroku run python manage.py migrate_schemas
После развертывания в Heroku приложения Django я выполняю команду следующим образом:
heroku python manage.py migrate_schemas
и выдает эту ошибку:
File "/app/.heroku/python/lib/python3.10/site-packages/tenant_schemas/migration_executors/base.py", line 58, in run_migrations run_migrations(self.args, self.options, self.codename, public_schema_name) Файл "/app/.heroku/python/lib/python3.10/site-packages/tenant_schemas/migration_executors/base.py", строка 31, в run_migrations MigrateCommand(stdout=stdout, stderr=stderr).execute(*args, **options) Файл "/app/.heroku/python/lib/python3.10/site-packages/django/core/management/base.py", строка 365, in execute if self.requires_system_checks and not options['skip_checks']: KeyError: 'skip_checks'
.
Django v = 3.0
Есть идеи, как исправить эту ошибку?
Я получил ту же ошибку при обновлении до 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.