2011-01-19 9 views
6

Estoy usando Django 1.2.3, PostGIS 1.5.2.Django evita crear PointField en la base de datos cuando ejecuto python manage.py syncdb

Por alguna razón, cuando corro

syncdb python manage.py

está creando todos los demás campos de la base de datos de mis modelos, pero evita la creación de un campo puse el nombre de punto que supone ser un PointField.

En mis archivos model.py He importado:

from django.contrib.gis.db import models 

y comentó:

#from django.db import models 

mi modelo es como la siguiente:

class MyModel(models.Model): 
    myid = models.AutoField(primary_key=True) 
    title = models.CharField(max_length=50) 
    point = models.PointField() 
    objects = models.GeoManager() 

También cuando está creando las lado de administración Obtengo los errores a continuación:

Failed to install index for reports.MyModel model: permission denied for relation spatial_ref_sys 
CONTEXT: SQL statement "SELECT SRID   FROM spatial_ref_sys WHERE SRID = new_srid" 
PL/pgSQL function "addgeometrycolumn" line 74 at SQL statement 
SQL statement "SELECT AddGeometryColumn('','',$1,$2,$3,$4,$5)" 
PL/pgSQL function "addgeometrycolumn" line 4 at SQL statement 

En mi setting.py He añadido:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.contrib.gis.db.backends.postgis', 

y

INSTALLED_APPS = (
... 
    'django.contrib.gis', 
... 

todos los IDE por qué estoy lanzando estos temas? ¡Gracias!

Respuesta

8

El problema era que la función de usuario de PostgreSQL que utilizaba django no tenía derechos suficientes.

Lo que sucedió cuando habilité mi base de datos con PostGIS creó un par de tablas "geometry_columns" y "spatial_ref_sys" usando una función de usuario diferente. Así que, nuevamente, cuando Django intentaba acceder a esas dos tablas, calló porque no tenía suficientes derechos.

fuera así de simple, menos mal :)

+1

¿Cambió la función del usuario de django a Superusuario? – dannyroa

+0

Acabo de recibir el mismo error y lo solucioné cambiando el propietario de las dos tablas en cuestión con un SQL como este: 'ALTER TABLE geometry_columns OWNER TO newuser' ejecutado como superusuario. – markshep

+0

La única forma de obtener acceso a la columna 'spatial_ref_sys' fue mediante el uso del superusuario. –

0

Se buscan para hacerle saber que estaba recibiendo este error en Django 1.4.3, PostgreSQL 9.1 y PostGIS 2. Se trabajó después de descargar y utilizar la última Django dev (1.6 alfa). No hubo necesidad de que el usuario de Postgres fuera superusuario. Aparentemente, el soporte de PostGIS 2 se agrega en Django 1.5

Cuestiones relacionadas