Ошибка при использовании GeoDjango со SpatiaLite в Ubuntu - PullRequest
3 голосов
/ 19 мая 2011

Я пытаюсь запустить GeoDjango на SpatiaLite в Ubuntu 11.04, и даже при очень минимальной настройке у меня возникает странная ошибка. Сохранение экземпляра модели с геополями работает, но при его повторной загрузке происходит сбой с исключением :

Error encountered checking Geometry returned from GEOS C function "GEOSWKBReader_read_r".

соответствующие части моего settings.py

DATABASES = {
    'default': {
    'ENGINE': 'django.contrib.gis.db.backends.spatialite',
        'NAME': '/tmp/test.db',
    }
}

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'django.contrib.gis',
    'testapp',
)

testapp.models:

from django.contrib.gis.db import models

class TestModel(models.Model):
    name = models.CharField(max_length=10)
    location = models.PointField()

testapp.admin

from django.contrib.gis import admin

from testapp.models import TestModel

admin.site.register(TestModel, admin.OSMGeoAdmin)

/ edit: тот же самый точный код работает без проблем на PostgreSQL / postgis

1 Ответ

5 голосов
/ 19 мая 2011

ОК, я сам нашел проблему: я забыл использовать models.GeoManager в качестве менеджера по умолчанию.Это решает мою проблему:

class TestModel(models.Model):
    name = models.CharField(max_length=10)
    location = models.PointField()

    objects = models.GeoManager()
...