I have the following model:
class Vacancy(models.Model):
lat = models.FloatField(\'Latitude\', blank=True)
lng = models.FloatField(\'Longitude\', bla
Note: Please check cleder's answer below which mentions about deprecation issue (distance -> annotation) in Django versions.
First of all, it is better to make a point field instead of making lat and lnt separated:
from django.contrib.gis.db import models
location = models.PointField(null=False, blank=False, srid=4326, verbose_name='Location')
Then, you can filter it like that:
from django.contrib.gis.geos import Point
from django.contrib.gis.measure import D
distance = 2000
ref_location = Point(1.232433, 1.2323232)
res = YourModel.objects.filter(
location__distance_lte=(
ref_location,
D(m=distance)
)
).distance(
ref_location
).order_by(
'distance'
)