我正在尝试使用其他数据序列化模型。我的模型如下所示:
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 时,我得到了一个距离。回到我的观点,我对结果进行了序列化,但“字段”部分中只有名称、纬度和 lng。如果我像这样将“距离”传递给我的序列化函数:serialized_data = serializers.serialize('json', results, fields="distance")
字段值为空,表明“距离”不在模型中。知道该怎么做吗?
谢谢。