PostgreSQL + Django + South的第一步

时间:2012-01-28 06:54:56

标签: django postgresql migration django-south geodjango

嗨Stackoverflow人,

过去,我总是用sqlite作为数据库平台在本地开发我的Django项目。现在,我想转移到PostgreSQL以利用GIS功能,但过渡让我感到非常悲痛。

我已经安装了与此post类似的postgresql,然后在GeoDjango description后面创建了数据库。

此外,我用

替换了模型类
from django.contrib.gis.db import models

并添加

geolocation = models.PointField(_('Geo Location'), 
                geography=True, 
                help_text=_('Geolocation with Longitude and Latitude'))

objects = models.GeoManager()

现在,在深入研究postgreSQL领域之前,我想通过Django Admin测试模型访问,我遇到了第一个错误。

当我在管理员中选择模型(我刚刚如上所述进行了修改)时,出现以下错误:

**InternalError at /admin/remap/project/**
current transaction is aborted, commands ignored until end of transaction block 

此错误与错误的SQL查询有关,但我很惊讶Django Admin创建了错误的sql语句(由百万开发人员使用,并且在早期的sqlite配置中工作正常)。

当我检查django sql语句时,我可以看到PointField的条目

"geolocation" geography(POINT,4326) NOT NULL,

但是当我检查 psql \ d projects 时,我看不到对PointField的更改(这是导致错误的原因)。由于我正在使用South,我执行了

./manage.py schemamigration projects --initial
./manage.py migrate projects

但我收到了消息

Running migrations for projects:
- Nothing to migrate.
- Loading initial data for projects.

我怎样才能说服南/ postgresql有迁移的东西? 您是否看到从SQLite过渡到PostgreSQL的任何其他问题?

感谢您的回答&帮助!

1 个答案:

答案 0 :(得分:2)

可能的答案:

你有syncdb吗?通常当我遇到南方问题时,我只是删除数据库并从头开始运行manage.py syncdb以确保我的所有列都符合要求。如果您希望南方忽略启用迁移的应用,只需将syncdb升级到当前版本,则可以使用manage.py syncdb --all