Filtre los códigos postales por proximidad en Django con la Ley Esférica de los cosenos

Estoy tratando de manejar la búsqueda de proximidad para un localizador de tienda básico en Django. En lugar de transportar PostGIS con mi aplicación solo para que pueda usar el filtro de distancia de GeoDjango, me gustaría usar la fórmula de distancia de la Ley de Esfera de Esfería en una consulta modelo. Me gustaría que todos los cálculos se hicieran en la base de datos en una consulta, para mayor eficiencia.

Un ejemplo de consulta de MySQL desde Internet que implementa la Ley de los cosenos esféricos como este:

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;

La consulta debe hacer referencia a la ForeignKey de código postal para los valores de lat / lng de cada tienda. ¿Cómo puedo hacer que todo esto funcione en una consulta de modelo de Django?

Respuestas a la pregunta(6)

Su respuesta a la pregunta