Wagtail:代码段与页面模型中GeoJSON字段的编辑处理

2024-05-26 17:43:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在我的Wagtail应用程序中实现Django Leaflet。基础表单字段是GeoJSON字段。不过,我只在将模型注册为一个代码片段而不是注册为Page模型时才能使其正常工作

我可以基于Page模型添加模型的实例,并且GeoJSON值被正确写入数据库。我还可以编辑要素几何图形,但该几何图形不会显示在传单地图上。当Wagtail为基于Page的模型呈现编辑视图时,GeoJSON将变成字符串,反序列化失败:

Error creating geometry from value
'"{\"type\":\"Point\",\"coordinates\":[-322.276779,59.41526]}"'
(String input unrecognized as WKT EWKT, and HEXEWKB.)

加载注册为代码段的同一模型的编辑视图时,JSON保持为dict,几何体在传单地图上呈现。所以我怀疑Wagtails编辑处理程序对context做了一些处理代码段时没有做的事情。去哪里看以及如何预防


Tags: django代码模型视图应用程序编辑geojson代码段
1条回答
网友
1楼 · 发布于 2024-05-26 17:43:20

我找到了解决办法。我按照错误消息找到了它的方法并重写了它。我的小部件现在看起来像这样:

[...]
from leaflet.forms.widgets import LeafletWidget

class LeafletWidgetWithMedia(LeafletWidget):
    include_media = True
    template_name = "widget.html"

    def deserialize(self, value):
        try:
            value = json.loads(value)  # this is the part I added
            return GEOSGeometry(value)
        except (GEOSException, ValueError, TypeError) as err:
            logger.error("Error creating geometry from value '%s' (%s)", value, err)
        return None

我仍然很好奇,尽管在摇摆面内部发生了什么

相关问题 更多 >

    热门问题