Cómo filtrar un modelo django con coordenadas de latitud y longitud que caen dentro de un radio determinado

Tengo el siguiente modelo.

class Location(models.Model):
    name = models.CharField(max_length = 128, blank = True)
    address =models.CharField(max_length = 200, blank= True)
    latitude = models.DecimalField(max_digits=6, decimal_places=3)
    longitude = models.DecimalField(max_digits=6, decimal_places=3)

    def __unicode__(self):
        return self.name

Si mi latitud y longitud actual es:

current_lat = 43.648
current_long = 79.404

Hice una investigación y me encontré con elEcuación de Haversine que calcula la distancia entre dos coordenadas de ubicación. A continuación se muestra la ecuación que encontré:

import math

def distance(origin, destination):
    lat1, lon1 = origin
    lat2, lon2 = destination
    radius = 6371 # km

    dlat = math.radians(lat2-lat1)
    dlon = math.radians(lon2-lon1)
    a = math.sin(dlat/2) * math.sin(dlat/2) + math.cos(math.radians(lat1)) \
        * math.cos(math.radians(lat2)) * math.sin(dlon/2) * math.sin(dlon/2)
    c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
    d = radius * c

    return d

Me gustaría devolver todos los objetos de ubicación que se encuentran dentro de un radio de 10 km. ¿Cómo puedo filtrarlo de tal manera que solo devolverá todos los objetos de ubicación que se encuentren dentro de este radio de 10 km?

LocationsNearMe = Location.objects.filter(#This is where I am stuck)

¿Hay alguna forma de implementar la ecuación de Haversine en el filtrado de modo que solo devuelva los objetos de ubicación que se encuentren dentro de un radio de 10 km?

Estoy buscando una respuesta bien detallada. Aprecio la ayuda.

Respuestas a la pregunta(2)

Su respuesta a la pregunta