def filter_by_location(self, distance, lat, lon):
min_lat, max_lat, min_lon, max_lon = self.bounding_coordinates(distance, lat, lon)
artists_within_bounds = self.filter(
lat__gte=min_lat,
lat__lte=max_lat,
lon__gte=min_lon,
lon__lte=max_lon
)
nearby_artist_ids = []
for artist in artists_within_bounds:
if calc_distance((lat, lon,), (artist.lat, artist.lon,)).miles <= distance:
nearby_artist_ids.append(artist.id)
return self.filter(id__in=nearby_artist_ids)
# TODO(lucas): Use annotations as much as possible to improve performance
评论列表
文章目录