2011-01-19 8 views
6

J'utilise Django 1.2.3, PostGIS 1.5.2.Django évite de créer PointField dans la base de données quand j'exécute python manage.py syncdb

Pour une raison quelconque quand je lance

python manage.py syncdb

cela crée tous les autres champs de la base de données de mes modèles, mais évite de créer un champ que j'ai appelé point supposé être un PointField.

Dans mes fichiers model.py j'ai importé:

from django.contrib.gis.db import models 

et a commenté:

#from django.db import models 

mon modèle ressemble à ceci:

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

Aussi, quand crée le Côté administrateur, je reçois les erreurs ci-dessous:

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 

Dans mon setting.py J'ai ajouté:

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

et

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

Toute ides pourquoi je suis haletante ce problèmes? Je vous remercie!

Répondre

8

Le problème était que le rôle utilisateur PostgreSQL que django utilisait avait des droits insuffisants. Ce qui s'est passé lorsque j'ai activé ma base de données avec PostGIS, il a créé un couple de tables "geometry_columns" et "spatial_ref_sys" en utilisant un rôle d'utilisateur différent. Donc, encore une fois, quand Django essayait d'accéder à ces deux tables, il a chialé parce qu'il n'avait pas assez de droits.

Il était aussi simple que cela, ouf :)

+1

Avez-vous changé le rôle de l'utilisateur django en superutilisateur? – dannyroa

+0

Je viens d'obtenir la même erreur et je l'ai corrigé en changeant le propriétaire des deux tables en question avec SQL comme ceci: 'ALTER TABLE geometry_columns OWNER TO nouvel utilisateur' exécuté en tant que superutilisateur. – markshep

+0

La seule façon d'accéder à la colonne 'spatial_ref_sys' était d'utiliser le super-utilisateur. –

0

voulais vous faire savoir que je recevais cette erreur sur Django 1.4.3, Postgres 9.1 et PostGIS 2. Il a travaillé après avoir téléchargé et utilisé le dernier Django dev (1,6 alpha). L'utilisateur Postgres n'était pas obligé d'être superutilisateur. Apparemment, le support de PostGIS 2 est ajouté dans Django 1.5

Questions connexes