【发布时间】:2015-10-20 15:46:46
【问题描述】:
我有一个包含经纬度信息的模型作为 FloatFields。
class Trader(models.Model):
latitude = models.FloatField()
longitude = models.FloatField()
我想通过与给定位置(纬度,经度)的距离增加来订购此模型,但似乎无法使用 F() 表达式(使用 hasrsine 库,我没有成功将它们转换为浮点数)
Trader.objects.all().annotate(distance=haversine((lat, lon), (float(F('latitude')), float(F('longitude'))))).order_by('distance')
此查询引发以下类型错误:
float() argument must be a string or a number
我也尝试过使用带有 FloatField() 作为 output_field 参数的 ExpressionWrapper,但没有成功。
我怎样才能做到这一点?
提前感谢您的帮助!
【问题讨论】:
-
您的函数
F()返回什么(数据类型)?我怀疑它正在返回某种序列(列表,元组,...)。 -
这能回答你的问题吗? Django sort by distance
标签: python mysql django orm geospatial