如何根据django模型转换此查询?
select name,CAST((6371 * acos(cos(radians(37.51902684888236)) * cos(radians(Lat)) * cos(radians(Lon) - radians(127.10458919288556)) + sin(radians(37.51902684888236))* sin(radians(Lat)))) * 1000 as Int) as distance from station
此查询计算搜索最近的电台。
例如Django模型。
class Station(models.Model):
Id = models.IntegerField(primary_key=True)
Name = models.CharField(max_length=45)
Lat = models.FloatField()
Lon = models.FloatField()
如何根据django模型获取工作代码?
答案 0 :(得分:1)
由于你引用了django模型,所以我建议你潜入geo django专门设计来处理地理相关的东西。以下是计算2点click here之间距离的参考。
如果您不想在配置中进行此类更改并使用现有设置,那么我建议您为同一个而不是python编写sql,因为您可能需要更多过滤或排序,这将对性能产生巨大影响。
答案 1 :(得分:0)
我对数据库知之甚少,无法给出令人满意的答案,但您似乎拥有专为计算而设计的数据库引擎。
我不认为Django的ORM是为处理这种特定的数据库语言而构建的。
您可以查看关于aggregating functions的Django文档,如果这不起作用,您可以随时回到Django中的performing raw sql。
就个人而言,我会用Python执行计算。在这种情况下,您只需要获取所需的变量并使用Python math library来执行计算。
我希望这会给你一些正确方向的指示。