在模型中添加了一个字段,如何更新数据库以更改模型

时间:2015-02-14 03:20:14

标签: django django-south

我所做的只是在模型中添加一个字段,现在我收到一条错误,指出此列不存在。

为了重建数据库,我使用-flush(我不关心丢失数据),认为这会重建数据库,但我仍然会遇到同样的错误。

我被其他人告知使用South,因为我正在运行Django 1.6 我按照教程和字面上第一次运行syncdb,我得到以下(可能无关)错误:

dist-packages/easy-thumbnails/
raise Improperly_Configured(SOUTH_ERROR_MESSAGE)
django.core.exceptions.ImproperlyConfigured:

For South Support, customize the SOUTH_MIGRATION_MODULES setting like so:

South_Migration_Module = {
'easy_thumbnails': 'easy_thumbnails.south_migrations',
}

最终,我想做的就是让我的数据库反映我的模型。回到我在开发环境中处理这个项目的时候,我只是将我的sqlite文件拖到垃圾桶然后运行syncdb,但我现在不能这样做,因为我使用的是postgres。

所以我的问题是如何才能完成这个看似简单的任务呢?这是否意味着解决南方错误,或者完全不使用南方(我更喜欢),我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以手动打开数据库shell(>>> python manage.py dbshell)并使用DROP TABLE <table_name>;删除该表。为了使syncdb使用新字段重新创建表,仅清空表是不够的。

要解决此错误,请完全按照说明操作:将SOUTH_MIGRATION_MODULES设置添加到您的设置中。

话虽如此,我绝对建议您使用南方。它可以简化对模型的更改,并允许您在开发环境中保留测试数据,否则必须重新创建。这一切都很好,但是当您的项目上线时,绝对强制要求在更改模型时保留您的数据。南方是最好的工具。

South几乎是任何Django项目中不可或缺的一部分,Django与南方的开发人员合作,将其作为Django 1.7以后的核心功能。