json - 将 PointFeild 转换为 JSON 对象
问题描述
有什么方法可以将 GeoDjango 的 POINTFEILD 序列化为 JSON?
我有以下型号
class Company(models.Model):
name = models.CharField(max_length=200, default='Company', null=True)
def __unicode__(self):
return self.name
class Shop(models.Model):
name = models.CharField(max_length=200, default="bla")
address = models.CharField(max_length=300, default='blabla')
location = models.PointField(null=True, blank=True, geography=True)
company = models.ForeignKey(
Company, on_delete=models.CASCADE, null=True)
和以下序列化程序
class ShopSerializer(serializers.ModelSerializer):
distance = serializers.DecimalField(
source='distance.km', max_digits=10, decimal_places=2, required=False, read_only=True)
# serialize('geojson', Shop.objects.all(),
# geometry_field='location', fields=('name', 'address'))
class Meta:
model = Shop
fields = ['id', 'name', 'address', 'location', 'distance']
class CompanySerializer(serializers.ModelSerializer):
shop_set = ShopSerializer(many=True)
class Meta:
model = Company
fields = ['id', 'name', 'shop_set']
def create(self, validated_data):
shop_validated_data = validated_data.pop('shop_set')
company = Company.objects.create(**validated_data)
shop_set_serializer = self.fields['shop_set']
for each in shop_validated_data:
each['company'] = company
shops = shop_set_serializer.create(shop_validated_data)
return company
使用 GeoJson 我可以得到如下响应
[
{
"id": 1,
"name": "Cosmetica",
"address": "somwhere",
"location": {
"type": "Point",
"coordinates": [
24.896,
67.182
]
}
},
但这里的点场已经转换成一个数组。但我需要它是具有 2 个键值对的 Json 对象
location:{lat,long}
谁能帮忙
解决方案
为什么不使用 geos API? https://docs.djangoproject.com/en/3.1/ref/contrib/gis/geos/#django.contrib.gis.geos.GEOSGeometry.coords
pnt.coords
推荐阅读
- python-3.x - 在python tkinter中将不同的条目集彼此相邻定位
- php - Laravel Eloquent 关系 hasonethrough 返回一个空数组
- github - 基于 GitHub 决定如何以及在 README.md 文件中应用颜色的位置?
- android - 如何修复 Android .aar 项目中的“java.lang.NoClassDefFoundError”
- python - 在 python 中进行拼写检查的时间太多
- delphi - PostgreSQL 的 FireDAC 异常 EFDDBEngineException 错误代码映射是否有任何变化?
- c# - 如果 MSBuild 工具为时过早,如何让 MSBuild .proj 失败
- c++ - 使用 ICP 算法查找两个点云之间的平移
- angular - 如何在 angular-google-charts 中缩放谷歌折线图?
- javascript - 在 Google 我的地图 iframe 上禁用鼠标滚轮滚动