系统相关
首页 > 系统相关> > 在Ubuntu上使用GeoDjango和SpatiaLite时出错

在Ubuntu上使用GeoDjango和SpatiaLite时出错

作者:互联网

我想在Ubuntu 11.04上使用SpatiaLite运行GeoDjango,即使设置很少,我也会遇到一个奇怪的错误.使用地理字段保存模型实例有效,但是再次加载它会失败并显示exception

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)

/编辑:相同的确切代码在PostgreSQL / postgis上没有问题

解决方法:

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

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

    objects = models.GeoManager()

标签:geodjango,spatialite,python,django
来源: https://codeday.me/bug/20190903/1797168.html