Im Allgemeinen ist die beste PostGIS-Funktion für eine solche Abfrage ST_DWithin() :
z.B. alle Kunden, die im Umkreis von 1000 Metern um Geschäft 1 wohnen:
SELECT customers.*
FROM customers, shops
WHERE ST_DWithin(customers.the_geog, shops.the_geog, 1000)
AND shop.id = 1
ST_DWithin verwendet den räumlichen Index die Sie erstellt haben sollten und damit ST_Distance übertreffen.
In Django scheint es einen entsprechenden Filter namens dwithin :
D(m=5) gibt ein Entfernungsobjekt der Länge 5 Meter
zurückgeom ist die Geometrie, aus der Sie Entfernungen zu Zipcode-Objekten berechnen möchten
dwithin() ist die verwendete Funktion
poly ist das Geometrieattribut von Zipcode-Objekten
z = Zipcode(code=77096, poly='POLYGON(( 10 10, 10 20, 20 20, 20 15, 10 10))')