我有一个包含纬度和经度信息的模型,其为FloatFields。
class Trader(models.Model):
latitude = models.FloatField()
longitude = models.FloatField()
我希望能够按照给定位置(纬度,经度)与该模型之间的距离逐渐增加的顺序订购该模型,但是使用F()表达式似乎无法做到这一点(使用haversine库时,我没有成功将它们转换为浮点数)
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
我也尝试使用 ExpressionWrapper 和 FloatField() 作为输出字段参数,但没有成功。
我该如何实现呢?
非常感谢您的任何帮助!
F()
返回什么类型的数据?我怀疑它返回某种序列(列表、元组等)。 - Alan Hoover