Минимальное расстояние от одной точки до множества точек Django ORM

Я пытаюсь вычислить минимальные расстояния от одной точки до множества точек. Например, если в наборе есть 3 места A, B, C, а искомое место D, то я хочу min(dist(A, D), dist(B, D), dist(C, D). Вот моя модель места:

class Place(models.Model):
    latitude = models.FloatField(blank=False)
    longitude = models.FloatField(blank=False)

Вот мой запрос, который, похоже, не работает:

places_with_distance = Place.objects.annotate(
            distance=(
                Subquery(places_set.annotate(
                    distance_to_place_in_set=(
                        Min(
                            (F('latitude') - OuterRef('latitude')) * (F('latitude') - OuterRef('latitude')) +
                            (F('longitude') - OuterRef('longitude')) * (F('longitude') - OuterRef('longitude'))
                        )
                    )
                ).values('distance_to_place_in_set')))).order_by('distance')

Проблема в том, что расстояние вычисляется только для первого элемента places_set (например, только dist(A, D), но не dist(B, D), ...).

Спасибо!

Вернуться на верх