尝试将模型切换到django-mptt时,South会引发错误

时间:2013-07-20 01:56:30

标签: django django-south django-mptt

我刚刚使用PIP安装了django-mptt(意思是我有0.5.5),将现有模型(“Comment”)更改为MPTTModel的子类,并尝试与South进行模式迁移,但South给了我以下内容错误讯息:

  

字段'Comment.lft'没有指定默认值,但是NOT NULL。由于您要添加此字段,因此必须指定用于现有行的默认值。你想:

     
      
  1. 立即退出,并在models.py
  2. 中的字段中添加默认值   
  3. 指定现在用于现有列的一次性值
  4.         

    请选择一个选项:

this thread中,看起来开发人员建议告诉南方使用“0”,但是其他人建议这样做会产生另一个问题。如果有人能够阐明我可能做错了什么,或者我应该如何回应,我将非常感激。

1 个答案:

答案 0 :(得分:1)

正如Victor建议的那样,在提示时将“无”设置为默认值是正确的行动方案。但是,在迁移之后,可能还需要在模型上使用rebuild()方法。我还发布了django-mptt-dev谷歌集团,包裹作者Craig de Stigter回复了以下内容:

  

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

我让他澄清他是否说我可以在南方要求设置默认值时指定“无”,然后转到shell并使用rebuild(),他说是。

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