Выберите выделение в Django

Что я здесь делаю неправильно?

[app.system_name for app in App.objects.all().distinct('system_name')] 

Дает мне:

 [u'blog', u'files', u'calendar', u'tasks', u'statuses', u'wiki', u'wiki', u'blog ', u'files', u'blog', u'ideas', u'calendar', u'wiki', u'wiki', u'statuses', u'ta sks', u'survey', u'blog'] 

Как и следовало ожидать, мне нужны все уникальные значения поля имя_система, но теперь я просто возвращаю все экземпляры приложений.

3 Solutions collect form web for “Выберите выделение в Django”

  1. Указание полей в distinct поддерживается только в Django 1.4+. Если вы используете 1.3, это просто игнорирует его.

  2. Если вы используете Django 1.4, вы должны добавить предложение order_by , которое включает и запускает все поля в distinct .

  3. Даже тогда, задавая поля с distinct это только поддержка PostgreSQL. Если вы используете что-то другое, например MySQL, вам не повезло.

Вся эта информация содержится в документах .

Вы должны заказать одно и то же имя поля при использовании имени с именем поля:

 App.objects.order_by('system_name').distinct('system_name') 

Из документа :

Когда вы указываете имена полей, вы должны указать order_by () в QuerySet, а поля в order_by () должны начинаться с полей в distinct () в том же порядке.

Например, SELECT DISTINCT ON (a) дает вам первую строку для каждого значения в столбце a. Если вы не укажете заказ, вы получите произвольную строку.

Вы можете использовать values_list () при использовании distinct ().

 App.objects.values_list('system_name').distinct() 
  • Использование многопроцессорных труб python
  • Обработка больших плотных матриц в python
  • Невозможно установить python-модуль «pycrypto» на Debian lenny
  • Ошибка: не найдено подходящего распределения для pip
  • Как исправить проблему «PyPI-тест не найден в .pypic» при отправке пакета в PyPI?
  • Как получить текущий текущий путь / имя модуля
  • Python 2.6 TreeMap / SortedDictionary?
  • Python try ... кроме запятой vs 'as' in except
  • Python - лучший язык программирования в мире.