Первые шаги с PostgreSQL + Django + South - PullRequest
1 голос
/ 28 января 2012

Привет, люди из Stackoverflow,

Раньше я всегда разрабатывал свои проекты Django локально с sqlite в качестве платформы базы данных.Теперь я хотел перейти на PostgreSQL, чтобы воспользоваться возможностями ГИС, но этот переход доставляет мне огромное горе.

Я установил postgresql, аналогичный этому post , а затем последовал за Описание GeoDjango для создания базы данных.

Кроме того, я заменил класс моделей на

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 создает неправильные SQL-операторы (используемые миллионами разработчиков, и он прекрасно работал в более ранней конфигурации SQLite).).

Когда я проверяю оператор django sql, я вижу запись для PointField

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

, но когда я проверяю psql \ dпроекты , я не вижу изменений в PointField (именно это и должно вызывать ошибку).Поскольку я использую South, я выполнил

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

, но получил сообщение

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

Как я могу убедить south / postgresql, что есть что-то для миграции?Видите ли вы еще какие-либо проблемы с переходом с SQLite на PostgreSQL?

Спасибо за ваш ответ и помощь!

1 Ответ

2 голосов
/ 28 января 2012

Возможный ответ:

Вы синхронизировали? Часто, когда у меня возникают проблемы с югом, я просто удаляю базу данных и запускаю manage.py syncdb с нуля, чтобы убедиться, что все мои столбцы выровнены. Если вы хотите, чтобы юг игнорировал приложения с поддержкой миграции и просто синхронизировал с текущей версией, вы можете использовать manage.py syncdb --all

...