2011-01-19 12 views
6

Sto usando Django 1.2.3, PostGIS 1.5.2.Django evita di creare PointField nel database quando eseguo python manage.py syncdb

Per qualche ragione quando corro

pitone manage.py syncdb

è la creazione di tutti gli altri campi del database dai miei modelli, ma evita la creazione di un campo ho chiamato punto che dovrebbe essere un PointField.

Nei miei file model.py Ho importato:

from django.contrib.gis.db import models 

e ha commentato:

#from django.db import models 

mio modello simile a questa:

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

Anche quando sta creando il lato admin Ottengo gli errori di seguito:

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 

Nel mio setting.py ho aggiunto:

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

e

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

Qualsiasi IDE per questo che sto ansante questi problemi? Grazie!

risposta

8

Il problema era che il ruolo utente di PostgreSQL che django utilizzava non aveva diritti sufficienti.

Che cosa è successo quando ho attivato il mio database con PostGIS ha creato un paio di tabelle "geometry_columns" e "spatial_ref_sys" utilizzando un diverso ruolo utente. Quindi, ancora una volta, quando Django stava cercando di accedere a quei due tavoli, si bloccava perché non aveva abbastanza diritti.

fosse così semplice, accidenti :)

+1

Hai cambiato il ruolo dell'utente django in Superuser? – dannyroa

+0

Ho appena ricevuto lo stesso errore e l'ho risolto cambiando il proprietario delle due tabelle in questione con SQL in questo modo: 'ALTER TABLE geometry_columns OWNER TO newuser' eseguito come superutente. – markshep

+0

L'unico modo per accedere alla colonna 'spatial_ref_sys' era usando il superutente. –

0

volevo farvi sapere che mi è stato sempre questo errore su Django 1.4.3, Postgres 9.1 e PostGIS 2. Ha funzionato dopo aver scaricato e utilizzato l'ultima Django dev (1.6 alpha). Non era necessario che l'utente di Postgres fosse superutente. Apparentemente il supporto di PostGIS 2 è stato aggiunto in Django 1.5

Problemi correlati