objects = Position.objects.exclude(latitude__isnull = True).exclude(longitude__isnull = True).exclude(startup__isnull = True).extra(where=["3956 * 2 * ASIN(SQRT(POWER(SIN((%(latitude)s - abs(latitude)) * pi()/180 / 2), 2) + COS(%(latitude)s * pi()/180 ) * COS(abs(latitude) * pi()/180) * POWER(SIN((%(longitude)s - longitude) * pi()/180 / 2), 2) )) < 50" % {'latitude': latitude, 'longitude': longitude}],)
objects = objects.order_by('startup').distinct('startup')
我使用上面的代码查找附近的对象。但是,即使对象与数据库中的对象具有相同的纬度/经度,数据库中的对象也不会显示。你知道吗
例如,假设位置对象1具有以下坐标:
Latitude: -23.5551522346
Longitude: -46.6540710256
用户1具有以下坐标:
Latitude: -23.5551522346
Longitude: -46.6540710256
位置对象1不会作为附近的对象显示给用户1。你知道吗
我该怎么办?你知道吗
我该怎么办?
获取生成的查询的输出(
django-debug-toolbar
将适用于此)。对数据库服务器运行手动查询,直到它工作为止。然后回来修改你的extra
。你知道吗如果您不想使用GeoDjango,请看一下我在项目(MySQL,Haversine)中使用的这个片段
也许这个比较(哈弗森和吉德詹戈)会让你相信: https://gist.github.com/andilab/4232b463e5ad2f19c155[吉德詹戈示例]
您应该在postgis中使用geodjango(http://geodjango.org/)。你知道吗
相关问题 更多 >
编程相关推荐