django-geoposition / json-response出错

时间:2013-11-11 16:54:59

标签: django django-geoposition

我正在做自动完成输入。

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

   position = GeopositionField(default=DEFAULT)

当我尝试创建json响应时,给出了这个错误:

   TypeError: Geoposition(40,2) is not JSON serializable

我该如何解决这个问题?

修改1:

views.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')

2 个答案:

答案 0 :(得分:4)

问题几乎就是例外。 GeopositionField是一种复杂类型,它没有任何标准的序列化方式到JSON。您必须将其拆分为单独的坐标,例如将其转换为模型中的字典。

像这样:

class Dispositivo(models.Model):
    ...

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

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

答案 1 :(得分:1)

我只是通过在将序列化程序放在GeopositionField上时将CharField放在其中来解决此问题

放在serializers.py上:

position = serializers.CharField(max_length=100)