django地理位置/json响应出错

django地理位置/json响应出错,django,django-geoposition,Django,Django Geoposition,我正在做一个自动完成输入 我正在尝试创建一个json响应。 在我的模型中,我有: position = GeopositionField(default=DEFAULT) 当我尝试创建json响应时,会出现以下错误: TypeError: Geoposition(40,2) is not JSON serializable 我怎样才能解决这个问题 编辑1: 在视图.py中: data =[{'label': n.nombre, 'nombre': n.nombre, 'posic

我正在做一个自动完成输入

我正在尝试创建一个json响应。 在我的模型中,我有:

   position = GeopositionField(default=DEFAULT)
当我尝试创建json响应时,会出现以下错误:

   TypeError: Geoposition(40,2) is not JSON serializable
我怎样才能解决这个问题

编辑1:

视图.py中

data =[{'label': n.nombre, 'nombre': n.nombre, 'posicion': n.position, 'status': n.estado} for n in
               Dispositivo.objects.filter(nombre__icontains=what)]

return HttpResponse(json.dumps(data), mimetype='application/json')

问题几乎就是例外情况所说的。GeoppositionField是一种复杂类型,没有任何标准的序列化为JSON的方法。您必须将其拆分为单独的坐标,例如,通过将其转换为模型中的字典

像这样:

class Dispositivo(models.Model):
    ...

    def position_dict(self):
        return {'lat': self.position.latitude, 'lon': self.position.longitude}

然后在要转储的数据中,写入
{…'position':n.position_dict(),…}
以使用字典表示,而不是复杂字段。

我只需在GeopositionField上放置序列化程序时的CharField,就解决了这个问题

在serializers.py上,将以下内容放入:

position = serializers.CharField(max_length=100)

你是如何做出回应的?@che我编辑了这个问题。现在看,谢谢你的帮助。现在,我如何序列化十进制?我在数据中尝试了
decimal(n.position.latitude)
,但没有成功。我可以序列化转换为字符串
str(n.position.latitude)
我如何在这样的查询中使用
position_dict
a=Dispositivo.objects.filter(bla='bla')。值(…,position_dict.lat,position_dict.lon)
@Don:我想你做不到。