我刚刚使用PIP安装了django-mptt(意思是我有0.5.5),将现有模型(“Comment”)更改为MPTTModel的子类,并尝试与South进行模式迁移,但South给了我以下内容错误讯息:
字段'Comment.lft'没有指定默认值,但是NOT NULL。由于您要添加此字段,因此必须指定用于现有行的默认值。你想:
- 立即退出,并在models.py
中的字段中添加默认值- 指定现在用于现有列的一次性值
醇>请选择一个选项:
在this thread中,看起来开发人员建议告诉南方使用“0”,但是其他人建议这样做会产生另一个问题。如果有人能够阐明我可能做错了什么,或者我应该如何回应,我将非常感激。
答案 0 :(得分:1)
正如Victor建议的那样,在提示时将“无”设置为默认值是正确的行动方案。但是,在迁移之后,可能还需要在模型上使用rebuild()方法。我还发布了django-mptt-dev谷歌集团,包裹作者Craig de Stigter回复了以下内容:
如果迁移导入实际模型(而不是南ORM模型)并在迁移结束时执行YourModel.objects.rebuild(),则应正确迁移。您在此期间用于mptt字段的实际值无关紧要,因为rebuild()将覆盖它。
我让他澄清他是否说我可以在南方要求设置默认值时指定“无”,然后转到shell并使用rebuild(),他说是。
无论如何,它似乎对我有用。