追加データを使用してモデルをシリアル化しようとしています。私のモデルは次のようになります。
class Object(models.Model):
name = models.CharField(max_length=100, null=False)
lat = models.FloatField()
lng = models.FloatField()
HTML5/Ajax を使用して緯度/経度を渡しています。それを取得したら、カスタム マネージャーを使用して現在の場所までの距離を計算しています。
class Object(models.Manager):
def closest(self, lat, lng):
from django.db import connection
cursor = connection.cursor()
cursor.execute("""
SELECT a.*, SQRT(
POW(69.1 * (a.lat - %s), 2) +
POW(69.1 * (%s - a.lng) * COS(a.lat / 57.3), 2)) AS distance
FROM app_object a
GROUP BY a.id
ORDER BY distance
""" % (lat, lng))
results = []
for row in cursor.fetchall():
p = self.model(id=row[0],name=row[1],description=row[2])
p.distance = row[3]
results.append(p)
return results`
results[0].distance を実行すると、距離が得られます。ビューに戻り、結果をシリアル化しますが、「フィールド」セクションには名前、緯度、経度のみが含まれます。次のようにシリアライズ関数に「距離」を渡すと: serialized_data = serializers.serialize('json', results, fields="distance")
フィールドの値が空で、モデルに「距離」が含まれていないことを示しています。どうすればいいですか?
ありがとう。