在GeoDjang中添加特性

2024-09-30 10:30:39 发布

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

我一直收到这个错误:

TypeError at /
<Section: BILAY - 001> is not JSON serializable

在我的视图.py公司名称:

^{2}$

在我的模型.py公司名称:

class ButuanMaps(gismodel.Model):
    class Meta:
        verbose_name = u'Butuan Map'
        verbose_name_plural = u'Butuan Maps'

    clandpin = gismodel.CharField("Land PIN", max_length=50, null=True, blank=True)
    ssectionid = gismodel.ForeignKey(Section)
    narea = gismodel.DecimalField(max_digits=20, decimal_places=6)
    #ssectionid_id = gismodel.IntegerField()
    geom = gismodel.MultiPolygonField("Geom ID", srid=32651, null=True, blank=True)
    objects = gismodel.GeoManager()

    def __unicode__(self):
        return self.clandpin

当我在属性上添加nareassectionid时,它返回一个错误。为什么?在这一行中:

djf = Django.Django(geodjango='geom', properties= ['id','clandpin','ssectionid','narea'])

Tags: namepy名称trueverbose错误公司section
1条回答
网友
1楼 · 发布于 2024-09-30 10:30:39

我也有同样的问题詹戈。詹戈- GeoJSON.GeoJSON()方法。在

错误很明显,它告诉您字段“不是JSON可序列化的”。在

  • 第一个是因为它是十进制的,所以我猜它不理解你的十进制符号,它应该是昏迷或点。。。

  • 第二个是因为它是一个外键,它不能很好地处理它。

对于最后一个问题,我的建议是从djf部分删除该属性,对其进行解码,将该属性放回类似于dictionary的json中,最后对其进行编码。在

1-Get属性

prop = MyModel._meta.get_all_field_names()

2-删除“ssectionid”属性

^{pr2}$

3-解码

djf = Django.Django(geodjango='geom', properties = prop)
decod = djf.decode(obj)

4-获取外键值

 sectionlist = MyModel.objects.filter().values('ssectionid__id')

5-为“decod”的每个元素添加属性“ssectionid”

for el in decod:
    el.to_dict()["properties"].update({"ssectionid": sectionlist.get(id=el.properties['id'])["ssectionid__id"]})

6-编码

geojson = geoj.encode(decod)

我不认为这是一个好的答案,我说它有效。在

编辑

django-geojson就是你要找的!在

相关问题 更多 >

    热门问题