In generale, la migliore funzione PostGIS per una tale query è ST_DWithin() :
per esempio. tutti i clienti che risiedono entro 1000 metri dal negozio n. 1:
SELECT customers.*
FROM customers, shops
WHERE ST_DWithin(customers.the_geog, shops.the_geog, 1000)
AND shop.id = 1
ST_DWithin utilizzerà l'indice spaziale che avresti dovuto creare e quindi superare ST_Distance.
In Django sembra esserci un filtro corrispondente chiamato dwithin :
D(m=5) restituisce un oggetto a distanza di 5 metri
geom è la geometria da cui vuoi calcolare le distanze dagli oggetti CAP
dwithin() è la funzione utilizzata
poly è l'attributo geometrico degli oggetti codice postale
z = Zipcode(code=77096, poly='POLYGON(( 10 10, 10 20, 20 20, 20 15, 10 10))')