Интеграция GeoDjango в существующий проект Django - PullRequest
6 голосов
/ 26 июня 2011

У меня есть проект Django с несколькими приложениями.Все они разделяют БД с engine = django.db.backends.postgresql_psycopg2.Теперь я хочу получить некоторую функциональность GeoDjango и решил, что хочу интегрировать ее в свой существующий проект.Я прочитал учебник, и похоже, что мне нужно создать отдельную базу данных для GeoDjango.Интересно, есть ли вокруг?Я попытался добавить это в один из моделей models.py моего приложения, не изменяя мои настройки БД:

from django.contrib.gis.db.models import PointField

class Location(models.Model):
        location = PointField()

Но когда я запускаю syncdb, я получаю эту ошибку.

File "/home/virtual/virtual-env/lib/python2.7/site-packages/django/contrib/gis/db/models/fields.py", line 200, in db_type
    return connection.ops.geo_db_type(self)

Ответы [ 3 ]

2 голосов
/ 03 июля 2011

На самом деле, насколько я помню, django.contrib.gis.db.backends.postgis является расширением postgresql_psycopg2, так что вы можете изменить драйвер БД в настройках, создать новый БД с пространственным шаблоном и затем перенести данные в новый БД (юг отличныйза это).Сам по себе geodjango сильно зависит от внутренних методов БД, поэтому, к сожалению, вы не можете использовать его с обычными БД.

Другой способ - вы можете использовать способность django multi-db ,и создайте дополнительную базу данных для моделей геоджанго.

1 голос
/ 18 июля 2011

Ваша ошибка выглядит так, как будто вы не изменили расширение базы данных в вашем файле настроек. Технически вам не нужно создавать новую базу данных с использованием пространственного шаблона, вы можете просто запустить сценарии PostGIS в вашей существующей базе данных, чтобы получить все геопространственные полезности. Как всегда, вы должны сделать резервную копию существующей базы данных, прежде чем делать это.

0 голосов
/ 19 июля 2011

Я не на 100%, но я думаю, что вы можете направить postgis.sql иatial_ref_sys.sql в вашу существующую базу данных, предоставить разрешения для таблиц и изменить настройку db на "django.contrib.gis.db. backends.postgis». (После того как вы установили deps конечно)

https://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#spatialdb-template

Мне было бы интересно посмотреть, что вы найдете. Будьте осторожны, установка postgis может создать некоторого персонажа, но вы не хотите, чтобы он создавал слишком много.

...