ВЫБЕРИТЕ DISTINCT ON (столбец геометрии), эквивалентный GeoDjango - PullRequest
0 голосов
/ 12 марта 2012

Я пытаюсь создать запрос Django, который будет выполнять эквивалент следующего запроса PostgreSQL / PostGIS:

SELECT DISTINCT ON (site) * FROM some_table;

site - это столбец геометрии типа POINT.Как это можно сделать?

В основном, многие записи в some_table имеют одинаковую геометрию POINT;Я просто хочу список геометрий без дубликатов.Меня не волнуют остальные столбцы some_table.

Остальная часть моего запроса довольно проста;это выглядит примерно так:

qs = models.SomeTable.objects.filter(foo='bar', site__contained=some_polygon)

Примечание:

«Менеджер» для SomeTable (SomeTable.objects) имеет тип django.contrib.gis.db.models.GeoManger.Я не знаю, помогает ли это вообще.

Информация о соответствующей версии:

  • Django 1.3
  • PostgreSQL 9.1.1
  • PostGIS 1.5.3

1 Ответ

0 голосов
/ 12 марта 2012

Я понял это. Я пропустил distinct: https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.distinct

Вот запрос django, который делает именно то, что мне нужно:

qs = models.SomeTable.objects.filter(foo='bar', site__contained=some_polygon).values('site').distinct()
...