如何在django orm中执行“AS”查询

时间:2015-12-28 15:42:04

标签: mysql django django-models orm django-orm

我试图将此sql查询转换为django orm查询,但我遇到了如何在单个ORM查询中执行sqrt和其他数学计算。

SELECT latitude, longitude, SQRT(
  POW(69.1 * (latitude - [input_lat]), 2) +
  POW(69.1 * ([input_lng] - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM MyTable HAVING distance < 25 ORDER BY distance

我尝试了什么 -

MyTable.objects.extra(select={"distance": X}).extra(where=["distance > 25"]).order_by('distance')

我应该用什么来代替X?我正朝着正确的方向前进吗?

如果我写这个

MyTable.objects.extra(select={"distance": "SQRT(POW(69.1 * (latitude - 37), 2) + POW(69.1 * (-122 - longitude) * COS(latitude / 573), 2))"}).extra(where=["distance > 25"]).order_by('distance')

它会抛出错误OperationalError: no such function: SQRT。我想我的DB(sqlite3)不支持这个功能。如何克服这个问题?

MyTable有5列,包括latitudelongitude

我们将从最终用户获得input_latinput_lng的值。

0 个答案:

没有答案