1

在处理 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

这很奇怪,因为如果我打开外壳,我可以添加对象并且该字段确实有效。

我能做些什么?

4

1 回答 1

1

这是其中一次迁移的问题。

为了找到它是什么,我放弃了我的数据库并尝试运行python manage.py migrate,但发生了同样的错误。
然后我注意到一个相关模型对此模型有默认值,如下所示:

def first_my_model():
    return MyModel.objects.first().pk if MyModel.objects.first() else 0

它试图在此调用中使用新添加的(但在 db 上尚不存在)字段,从而引发错误。

于 2014-12-05T11:36:54.300 回答