我正在使用Django 1.2.3,PostGIS 1.5.2.
出于某种原因,当我跑
python manage.py syncdb
它从我的模型创建数据库中的所有其他字段,但避免创建一个我命名为PointField的字段.
在我导入的model.py文件中:
from django.contrib.gis.db import models
并评论说:
#from django.db import models
我的模型看起来像这样:
class MyModel(models.Model): myid = models.AutoField(primary_key=True) title = models.CharField(max_length=50) point = models.PointField() objects = models.GeoManager()
此外,当创建管理员端时,我得到以下错误:
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
在我的setting.py中,我添加了:
DATABASES = { 'default': { 'ENGINE': 'django.contrib.gis.db.backends.postgis',
和
INSTALLED_APPS = ( ... 'django.contrib.gis',...
任何想法为什么我要解决这个问题?谢谢!
解决方法
问题是django使用的PostgreSQL用户角色没有足够的权限.
当我使用PostGIS启用数据库时发生了什么,它使用不同的用户角色创建了几个表“geometry_columns”和“spatial_ref_sys”.所以,当Django试图访问这两个表时,它又陷入困境,因为它没有足够的权限.
就这么简单,哇哇:)