geodjango admin没有提供几何值

时间:2012-10-11 00:46:05

标签: django-admin geodjango

我正在为我的宠物项目尝试geodjango,一切看起来都不错......但

在我的模型中,我有一个这样的字段:

coordinates= models.PointField(srid=4326,default='POINT(0.0 0.0)')

我的管理员从admin.OSMGeoAdmin延伸但是当我在管理员中打开一个新的模型实例时,我没有在地图中看到'0.00,0.00'点,如果我尝试保存文档,我会得到'没有提供几何值'。就像管理员只是不能把点放在地图上。

另外,如果我尝试使用shell,我可以保存没有问题的实例,并使用默认值POINT(0.0 0.0)获取字段。

我在管理员中遗漏了什么吗?

感谢任何提示!

2 个答案:

答案 0 :(得分:3)

我有同样的问题。 有点奇怪。获得POST的内容毫无意义。 在点击提交时,textarea具有正确的几何值(因为我在表单上放了一个onsubmit,输出这个值)。 但提交的内容并非如此。 所以我把JS关掉......哇。提交了正确的值,我有点高兴,但这不是解决方案。 但是我不知道javascript正在做什么。 我用Django 1.3和1.4试过这个。 你有运气吗?

更新。再一个'解决方案'...覆盖openlayers.html并将textarea转换为标准文本输入。哇。再次工作。

解决!

所以我采取了一些挖掘...但是我的管理员使用了tinymce ... Tinymce在textareas上工作是的......好吧它搞砸了小部件textarea,但是一直如此默默地。

editor_deselector:“vWKTField”

答案 1 :(得分:2)

好吧,在使用open layers.html(感谢noisyboiler!)后,我发现OSMGeoAdmin display_wkt上有一个属性,将其设置为True将显示textArea而不会破解模板。

对于具有现有点的条目,它包含以下格式的值:

SRID=3857;POINT(890338.8453418 -1109499.0330941)

所以我只需将我的Point Field更改为:

coordinates= models.PointField(srid=4326,default='SRID=3857;POINT(0.0 0.0)')

我从Spherical Mercator了解到的是4326用于二维地图,但似乎谷歌地图使用3857包含球形投影。

现在有效!