3

我试图让 GeoDjango 在 Ubuntu 11.04 上的 SpatiaLite 上运行,即使设置非常简单,我也遇到了一个奇怪的错误。保存带有地理字段的模型实例是可行的,但再次加载它失败并出现异常

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 上没有问题

4

1 回答 1

5

好的,我自己发现了问题:我忘记使用models.GeoManager默认管理器了。这解决了我的问题:

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

    objects = models.GeoManager()
于 2011-05-19T09:12:29.070 回答