使用PostGIS数据库测试GeoDjango应用
我正在尝试在一个全新的Django应用上启用测试功能。这个应用需要运行一些几何测试。我在Postgres.app上安装的Postgres(带有Postgis 2)运行得很好,我的默认数据库也没有问题(Django应用的同步、创建等都没问题),但是当我运行
manage.py test
时,我遇到了一个错误:
django.db.utils.ProgrammingError: 类型 "geography" 不存在 第4行: "geom" geography(GEOMETRY,4326) NOT NULL
完整错误信息:https://gist.github.com/dyve/11dcd455aa5a25628773
我知道Django会为测试创建一个Postgres数据库。我怀疑它没有正确启用测试数据库上的PostGIS扩展。
如果这里有人能帮我解决测试的问题,我将非常感激。
1 个回答
3
问问题本身就是在回答问题……
我查看了Django的源代码,发现它会检查是否存在template_postgis
。如果找到了这个东西,它就会支持Postgis版本小于2.0。如果没有找到,它就会支持Postgis版本大于等于2。
结果,我的数据库里确实有一个旧的template_postgis。我把它改了个名字(暂时保留着,直到我确定其他项目不需要它),然后测试就正常了。