【问题标题】:Stop Django background-task from deleting completed_task model停止 Django 后台任务删除 completed_task 模型
【发布时间】:2021-01-26 11:06:12
【问题描述】:

django-background-tasks==1.1.11Django==2.2Python 3.6.9)上,我遇到了这个问题,每次我运行python manage.py migrate,表background_task_completedtask 都会被删除。这打破了我的后台任务。到目前为止,我已经找到了一种逆转它的方法,因为它是与初始迁移分开的迁移,这意味着我可以python manage.py migrate background_task 0001_initial 来恢复它,但这确实意味着它仍然会在下一次迁移中被删除。 对更持久的解决方案有什么想法吗?

【问题讨论】:

  • 如果您浏览了每个迁移文件,它们中的任何一个看起来是否会删除该表?
  • 我自己的应用程序的 cmets:没有。有一个名为 0002_delete_completedtaskbackground_task 迁移,但我不知道它存储在哪里,并认为如果我删除它,它只会重新出现在下一个 makemigrations
  • 那么它是在外部包中吗?你能cd 到你的虚拟环境的目录并运行find . -name "*0002_delete_completedtask*" 吗?您之前可能已经卸载了django-background-tasks 应用程序,然后运行了makemigrations,这会生成迁移。尝试删除它,确保应用程序已安装,然后再次运行 makemigrations 以检查它是否不会再次生成。
  • 是的,它是一个外部包,确切地说是django-background-tasks==1.1.11。删除迁移(和缓存),运行 makemigrations 并简单地重新创建迁移......

标签: python django django-migrations background-task


【解决方案1】:

自己找到了一个(有点老套的)永久解决方案: 通过伪造迁移(python manage.py migrate --fake(或python manage.py migrate appname --fake)),您可以让 django 认为迁移已经执行而没有实际执行。通过对困扰我的迁移进行此操作,我设法让一切恢复正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多