Django序列化GeoJSON报错:JSONEncoder.__init__()收到意外参数'fields'
问题原因及解决方法
你遇到的错误是因为**djgeojson序列化器不支持Django原生serialize函数的fields参数**,它使用properties参数来指定需要包含的非几何属性字段。
解决步骤
直接将代码中的fields=("province",)替换为properties=("province",)即可:
markers = Agency.objects.all() geojson_file = serialize("geojson", markers, geometry_field="location", properties=("province",) )
补充说明
如果更倾向于直接使用djgeojson的序列化器类,也可以这样写:
from djgeojson.serializers import Serializer markers = Agency.objects.all() geojson_file = Serializer().serialize(markers, geometry_field='location', properties=('province',))
本质上是因为djgeojson的序列化实现逻辑与Django原生序列化不同,它将属性字段的配置参数命名为properties,而非Django原生的fields,导致参数传递错误触发了JSONEncoder的初始化异常。
内容的提问来源于stack exchange,提问作者Vahid
相关产品推荐
相关产品推荐

