Я пытаюсь обработать поиск близости для основного хранилища хранилища в Django. Вместо того, чтобы перетаскивать PostGIS с моим приложением, так что я могу использовать фильтр расстояния GeoDjango, я бы хотел использовать формулу сферического закона формулы Косинуса в модельном запросе. Я бы хотел, чтобы все вычисления выполнялись в базе данных в одном запросе, для эффективности.
Пример запроса MySQL из Интернета, реализующего сферический закон косинусов следующим образом:
SELECT id, (
3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) *
cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) *
sin( radians( lat ) ) )
)
AS distance FROM stores HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
Запрос должен ссылаться на Zipcode ForeignKey для каждого значения lat/lng хранилища. Как я могу выполнить всю эту работу в запросе модели Django?