我有一个模型,其中包含纬度和经度信息作为浮动字段。在
class Trader(models.Model):
latitude = models.FloatField()
longitude = models.FloatField()
我想通过增加与给定位置(lat,lon)的距离来排序这个模型,但似乎不能使用F()表达式(使用haversine库,我还没有成功地将它们转换成浮点数)
^{pr2}$此查询引发以下类型错误:
float() argument must be a string or a number
我还尝试使用ExpressionWrapper和FloatField()作为输出字段参数,但没有成功。在
我怎么能做到呢?在
提前感谢您的帮助!在
Func是django1.8中的新功能。在
基于this post。在
请注意,https://docs.djangoproject.com/en/1.8/ref/models/expressions/#f-expressions“生成SQL”和float(“generate SQL”)没有意义generate sql“==使用生成的sql中的字段值。你必须用一些知道如何将自己转换成sql的东西来改变haversine函数,它可以进行大量的计算,并且是django的朋友。。。在
你一定要有创造性才能优雅地解决这个问题。如果可以编写sql来进行计算,那么原始sql似乎是获得结果的最快方式。考虑使用地理扩展,例如postgis。如果您有一组小而固定的输入(lat,lon)组合或“预计算估计”来限制查询结果计数并用python进行计算和排序,那么可以考虑预计算。在
相关问题 更多 >
编程相关推荐