Django избегает создания PointField в базе данных, когда я запускаю python manage.py syncdb - PullRequest
6 голосов
/ 19 января 2011

Я использую 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',
...

Какие-нибудь идеи, почему я поднимаю эти проблемы? Спасибо!

Ответы [ 2 ]

8 голосов
/ 19 января 2011

Проблема заключалась в том, что у роли пользователя PostgreSQL, которую использовал django, было недостаточно прав.

Что случилось, когда я включил свою базу данных с помощью PostGIS, она создала несколько таблиц geometry_columns иatial_ref_sys с использованием другой роли пользователя.И снова, когда Django пытался получить доступ к этим двум таблицам, он забился, потому что у него не было достаточно прав.

Это было так просто, вот так:

0 голосов
/ 29 января 2013

Хотел сообщить, что я получаю эту ошибку на Django 1.4.3, Postgres 9.1 и PostGIS 2. Это сработало после того, как я скачал и использовал последнюю версию Django dev (1.6 alpha). Пользователю Postgres не нужно было быть суперпользователем. По всей видимости, в Django 1.5

добавлена ​​поддержка PostGIS 2
...