【问题标题】:AppConfig override restricts first makemigrationAppConfig 覆盖限制了第一次 makemigration
【发布时间】:2019-11-14 03:36:31
【问题描述】:

我正在覆盖 AppConfig 并在下面添加 __init__

default_app_config = 'api.apps.AppnameConfig'

其中有一些模型检查我想创建它们如果不退出所有工作正常。但是当我将它部署到另一台机器时

python manage.py makemigrations

显然失败是因为没有创建表,因为新项目没有迁移。它正在提高ProgrammingError我可以尝试传递这个但我不想走这条路。

我还检查了迁移文件夹是否存在工作正常,但迁移时再次失败。

请建议最好的方法。

【问题讨论】:

  • 命令如何失败? makemigrations 永远不会失败,无论是否有迁移。
  • makemigrations创建表,migrate 将运行迁移。
  • @AKX 是的,您很容易失败,尝试运行 runserver 而不创建数据库,此处数据库存在但没有关系,因为尚未应用迁移。
  • @YugandharChaudhari:如前所述,您需要运行python manage.py migrate
  • @Willem Van Onsem 是的,您是对的,但迁移也失败了。我需要先运行 makemigrations 不是吗?即使我在评论它运行的 default_app_config 时它没有失败,但我无法执行我正在做的模型检查

标签: django


【解决方案1】:

如果在__init__ 中没有应用任何迁移,则通过检查表内省返回[] 解决了这个问题

from django.db import connection

if connection.introspection.table_names():
    default_app_config = 'pathto.AppnameConfig'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多