Фильтрация почтовых индексов по близости в Джанго со сферическим законом косинусов

Я пытаюсь справиться с поиском близости для поиска базового магазина в Джанго. Вместо того, чтобы использовать 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?

Ответы на вопрос(6)

Ваш ответ на вопрос