Как вернуть запись с наименьшим расстоянием от точки с помощью geodjango?

Я использую geodjango и имею набор точек в своей базе данных. Чтобы получить набор точек в определенной области, я использую это:

queryset = Spot.objects.filter(point__distance_lte=(origin, distance_m))

Мой вопрос в том, как я могу вернуть только одну точку (точку с наименьшим расстоянием )с того момента, как я его прошел?

РЕДАКТИРОВАТЬ

Я должен упомянуть, что я передаю координаты и хочу создать с ними объект Point. Затем передайте эту точку в качестве источника и отфильтруйте по ней. Например, я пробовал:

from spots.models import *
from django.contrib.gis.geos import *

origin = Point(28.011030, -26.029430)
distance_m = 1000

queryset = Spot.objects.filter(point__distance_lte=(origin, distance_m))
for q in queryset:
    print q.distance

Этот фрагмент кода дает мне эту ошибку:

Traceback (most recent call last):
  File "<console>", line 2, in <module>
AttributeError: 'Spot' object has no attribute 'distance'

Достаточно интересно, если я сделаю следующее:

origin = Spot.objects.get(name='Montecasino').point
distance_m = 1000

for city in Spot.objects.distance(origin):
    print(city.name, city.distance)

(u'Design Quarter Parking', Distance(m=677.347841801))
(u'Montecasino', Distance(m=0.0))
(u'Fourways', Distance(m=1080.67723755))
6
задан darren 19 July 2012 в 10:16
поделиться