2011-06-25 27 views
5

Tengo un proyecto Django con múltiples aplicaciones. Todos comparten un DB con engine = django.db.backends.postgresql_psycopg2. Ahora quiero algunas funcionalidades de GeoDjango y decidí que quiero integrarlo en mi proyecto existente. Leí el tutorial y parece que tengo que crear una base de datos separada para GeoDjango. Me pregunto si habrá alguna forma alrededor. He intentado añadir esto en una de mis aplicaciones models.py sin cambiar la configuración de mi db:Integrando GeoDjango en el proyecto Django existente

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

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

Pero cuando corro syncdb, tengo este error.

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) 

Respuesta

2

En realidad, por lo que recuerdo, es django.contrib.gis.db.backends.postgis extensión del postgresql_psycopg2 por lo que podría cambiar db conductor en la configuración, crear nueva base de datos con la plantilla espacial y luego migrar los datos a la nueva db (South es ideal para esto). Por sí mismo, geodjango depende en gran medida de los métodos internos de DB, por lo tanto, desafortunadamente, no podrías usarlo con db regular.

Otra forma: puede hacer uso de la capacidad multi-db de django y crear db extra para los modelos geodjango.

+1

Si no está usando South, debe comenzar. Especialmente si desarrolla herramientas de control de versiones. –

1

Su error parece ser que proviene de no cambiar la extensión de la base de datos en su archivo de configuración. Técnicamente no necesita crear una nueva base de datos utilizando la plantilla espacial, simplemente puede ejecutar las secuencias de comandos PostGIS en su base de datos existente para obtener todos los objetos geoespaciales. Como siempre, debe hacer una copia de seguridad de su base de datos existente antes de hacer esto.

0

No soy 100%, pero creo que puede conectar postgis.sql y spatial_ref_sys.sql a su base de datos existente, otorgar permisos a las tablas y cambiar la configuración de db a "django.contrib.gis.db .backends.postgis ". (Después de haber instalado los deps por supuesto)

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

estaría interesado en ver lo que encuentre. Tenga cuidado, la instalación de Postgis puede construir algún personaje pero no quiere que se construya demasiado.

Cuestiones relacionadas