Привет StackOverflow людей,Первые шаги с PostgreSQL + Django + Южной
В прошлом, я всегда разработал свои проекты Django локально с SQLite в качестве платформы базы данных. Теперь я хотел перейти в PostgreSQL, чтобы воспользоваться функциями GIS, но переход дает мне огромное горе.
Я установил postgresql, аналогичный этому post, а затем выполнил 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, и я столкнулся с первой ошибкой.
Когда я выбираю модель (которую я только измененную, как указано выше) в Admin, я получаю следующее сообщение об ошибке:
**InternalError at /admin/remap/project/**
current transaction is aborted, commands ignored until end of transaction block
Эта ошибка связана с неправильным запросом SQL, но я удивлен, что Django Admin создает неправильные операторы sql (используется миллионами разработчиков, и он отлично работал в более ранней конфигурации sqlite).
Когда я проверяю заявление Джанго SQL, я могу увидеть запись для PointField
"geolocation" geography(POINT,4326) NOT NULL,
, но когда я проверяю PSQL \ D проектов, я не могу видеть изменения в PointField (это это то, что должно вызывать ошибку). Так как я использую Юг, я выполнил
./manage.py schemamigration projects --initial
./manage.py migrate projects
, но я получаю сообщение
Running migrations for projects:
- Nothing to migrate.
- Loading initial data for projects.
Как я могу убедить юг/PostgreSQL, что есть что-то мигрировать? Вы видите какие-либо другие проблемы с формой перехода SQLite на PostgreSQL?
Благодарим за ответ & help!
С базой данных, которая уже установлена, вы должны сначала [конвертировать приложение] (http://south.aeracode.org). /docs/convertinganapp.html), чтобы использовать юг, внести изменения в модели, а затем запустить ['schemamigration'] (http://south.aeracode.org/docs/commands.html#schemamigration), чтобы юг создавал миграцию и, наконец, примените эту миграцию с помощью команды '' migrate' '(http://south.aeracode.org/docs/commands.html#migrate). Судя по вашему вопросу, вы изменили модель, а затем запустили схему, у которой не было замороженной модели, чтобы сравнить текущие, чтобы она не обнаружила никаких изменений. –