Как отфильтровать модель Django с координатами широты и долготы, попадающими в определенный радиус

У меня есть следующая модель.

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

Если моя текущая широта и долгота:

current_lat = 43.648
current_long = 79.404

Я провел некоторое исследование и наткнулся наУравнение Haversine который вычисляет расстояние между двумя координатами местоположения. Ниже приведено уравнение, которое я нашел:

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.s,in(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

Я хотел бы вернуть все объекты Location, попадающие в радиус 10 км. Как я могу отфильтровать его так, чтобы он возвращал только все объекты Location, попадающие в радиус 10 км?

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

Можно ли как-нибудь реализовать уравнение Хаверсайна в фильтрации, чтобы оно возвращало только те объекты, которые находятся в радиусе 10 км?

Я ищу очень подробный ответ. Ценю помощь.

Ответы на вопрос(2)

Ваш ответ на вопрос