远程calulate查询如何转换为django base?

时间:2015-11-30 09:57:29

标签: python django

如何根据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模型获取工作代码?

2 个答案:

答案 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来执行计算。

我希望这会给你一些正确方向的指示。