在Django 1.7项目上工作时,我需要在现有模型中添加一个字段。
我添加了以下内容:bairro = models.CharField(max_length=200)
然后我运行了两个命令:
python manage.py makemigrations
python manage.py migrate
现在,测试不再运行了。
每当我运行python manage.py test
时,都会出现此错误:
django.db.utils.ProgrammingError: column admin_starbeli_salao.bairro does not exist
这很奇怪,因为如果我打开shell我可以添加对象并且该字段确实有效。
我该怎么办?
答案 0 :(得分:1)
这是其中一次迁移中的一个问题。
为了找到它的内容,我删除了我的数据库并尝试运行python manage.py migrate
,但是出现了相同的错误。
然后我注意到一个相关的模型有这个模型的默认值,如下所示:
def first_my_model():
return MyModel.objects.first().pk if MyModel.objects.first() else 0
它试图在此调用中使用新添加的(并且尚未存在于db上)字段,从而抛出错误。