【问题标题】:South raises error when trying to switch model to django-mpttSouth 在尝试将模型切换到 django-mptt 时引发错误
【发布时间】:2013-07-19 10:29:50
【问题描述】:

我刚刚使用 PIP 安装了 django-mptt(意味着我有 0.5.5),将现有模型(“评论”)更改为 MPTTModel 的子类,并尝试使用 South 进行模式迁移,但 South 给了我以下信息错误信息:

“Comment.lft”字段没有指定默认值,但不为空。由于您要添加此字段,因此您必须指定用于现有行的默认值。你愿意:

  1. 现在退出,并在 models.py 中为字段添加默认值
  2. 现在为现有列指定一次性值

请选择一个选项:

this thread 中,开发人员似乎建议告诉 South 使用“0”,但随后其他人建议这样做会产生另一个问题。如果有人能说明我可能做错了什么,或者我应该如何回应,我将不胜感激。

【问题讨论】:

  • 当它显示Please select a choice: 时选择了2 并输入None 也许这会解决问题

标签: django django-south django-mptt


【解决方案1】:

正如 Victor 所建议的,在出现提示时将“无”设置为默认值是正确的做法。但是,迁移后可能还需要在模型上使用rebuild() 方法。我还发布到 django-mptt-dev Google Group,包作者 Craig de Stigter 回复了以下内容:

如果您的迁移导入实际模型(不是南方 ORM 模型)并在迁移结束时执行 YourModel.objects.rebuild(),它应该正确迁移。在此期间您用于 mptt 字段的实际值是无关紧要的,因为rebuild() 将覆盖它。

我让他澄清一下,当 South 要求我设置默认值时,我是否可以指定“None”,然后转到 shell 并使用rebuild(),他说可以。

无论如何,它似乎对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-16
    • 2019-12-12
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多