Я пытаюсь вернуть набор запросов с расстояниями от родственной модели.GeoDjango расстояние родственной модели
models.py (упрощенный)
class Store(models.Model):
geopoint = models.PointField(srid=4326)
objects = models.GeoManager()
class HashTag(models.Model):
tag = models.CharField(max_length=100)
class Label(models.Model):
hashtags = models.ManyToManyField(HashTag)
store = models.ForeignKey(Store)
Что мне нужно, чтобы вернуть те объекты этикетки, которые имеют определенные теги/метки упорядоченные по расстоянию от данной точки.
Этикетки могут быть найдены:
Label.objects.filter(hashtags__in=tags)
Расстояния доступны на объектах Магазин рассчитывается с:
Store.objects.filter(label__hashtags__in=tags)
.distance(location).order_by('distance')
То, что я хотел бы сделать, это выполнить запрос на Label
таблицы в вернуть все, но я подозреваю, что это невозможно.
Попытка метод distance
по результатам QuerySet в:
TypeError: ST_Distance output only available on GeometryFields.
В противном случае было бы целесообразно, чтобы сделать наиболее эффективной следующая лучшая вещь. Единственное решение, которое я могу придумать, - это выполнить оба запроса и объединить результаты в набор.
Наткнулся через это ровно через год после того, как он был отправлен! Вы занимаете дистанцию (местоположение), но ваше поле кажется геометризованным. Так разве ваш запрос не должен быть расстоянием («геотоном»)? – e4c5
Эй, @RobinElvin Я отправил покойный (только на 2 года) ответ. Взглянуть! –