我正在使用Flask-SQLAlchemy和Postgres,Postgis和GEOAlchemy。我能够根据用户提交的点对表中的条目进行排序。我想知道我怎么也可以返回计算出的距离......
这是我对项目进行排序的方式:
result = Event.query.order_by(func.ST_Distance(Event.address_gps, coordinates_point)).paginate(page, 10).items
for result in results:
result_dict = result.to_dict()
return result_dict
根据用户位置(coordinates_point)。我想在result_dict中的每个结果中添加一个条目,该条目还包含项目的排序距离。我怎么做? func.ST_Distance返回什么?
我尝试在上面的for循环中添加它:
current_distance = func.ST_Distance(Event.address_gps, coordinates_point)
result_dict['distance'] = current_distance
但这似乎不起作用。
答案 0 :(得分:2)
您可以使用column labels
query = Event.query.with_entities(Event, func.ST_Distance(Event.address_gps, coordinates_point).label('distance')).order_by('distance')
results = query.paginate(page, 10).items
for result in results:
event = result.Event
distance = result.distance
result_dict = event.to_dict()
result_dict['distance'] = distance