【问题标题】:error in migrations/0001_initial.py when upgrading to DJango 2: migrations/0001_initial.py升级到 DJango 2 时 migrations/0001_initial.py 中的错误:migrations/0001_initial.py
【发布时间】:2018-12-16 22:58:27
【问题描述】:

我最近从 Django 1.11 升级到 2.1

这在两个不同的测试环境中运行良好,但是当我尝试将更改应用到我的生产环境时,我在尝试进行迁移时收到错误:

$ ./src/manage.py makemigrations
Traceback (most recent call last):
  File "./src/manage.py", line 11, in <module>
    execute_from_command_line(sys.argv)
  ...
  File "/home/90158/hackerspace/src/quest_manager/migrations/0001_initial.py", line 69, in Migration
    ('quest', models.ForeignKey(to='quest_manager.Quest')),
TypeError: __init__() missing 1 required positional argument: 'on_delete'

当然,我需要做的许多更改是将on_delete 添加到我的 ForeignKeys,但我的测试环境都没有出现此迁移错误!

编辑:

当我在我的测试环境中运行python -Wa src/manage.py test 时,我没有收到任何警告或错误。它在我的测试环境中迁移也没有问题。

【问题讨论】:

  • 为什么在生产环境中运行makemigrations?您应该在进行更改时在本地执行此操作,然后合并到 dev/staging 并合并到生产中。您可以将模型添加到您的问题中吗?
  • 这听起来超出了我目前的业余能力。你能推荐一个资源让我了解这个工作流程吗?
  • 听起来你需要看看 git & 实现一些版本控制; nvie.com/posts/a-successful-git-branching-model

标签: django upgrade django-migrations


【解决方案1】:

只需添加您的ForeignKey 所在的位置即可;

models.ForeignKey(Reporter, on_delete=models.CASCADE)

您可以查看此内容以获取更多选项。 https://docs.djangoproject.com/en/2.1/ref/models/fields/#arguments

希望对您有所帮助。

【讨论】:

  • 我已经将 on_delete 添加到模型本身的所有外键中。问题是这个错误出现在初始迁移 0001_initial.py 中,我不明白为什么。该迁移将使用 django 进行
猜你喜欢
  • 2020-08-14
  • 1970-01-01
  • 2016-03-15
  • 2023-03-19
  • 1970-01-01
  • 2020-04-07
  • 2012-12-23
  • 2017-10-30
  • 2016-04-25
相关资源
最近更新 更多