2

オートコンプリート入力を行っています。

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')
4

2 に答える 2

4

問題は、例外が言うことです。GeopositionField は複雑な型であり、JSON にシリアル化する標準的な方法はありません。モデル内のディクショナリに変換するなどして、個々の座標に分割する必要があります。

このような:

class Dispositivo(models.Model):
    ...

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

次に、ダンプするデータ{... 'position': n.position_dict(), ...}で、複雑なフィールドの代わりに辞書表現を使用するように記述します。

于 2013-11-11T19:16:48.690 に答える