Как получить уникальные экземпляры модели, а не значения, используя разные? - PullRequest
0 голосов
/ 18 ноября 2011

Редактировать

У меня есть несколько записей с одинаковым значением поля.Мне нужно отфильтровать набор запросов, чтобы экземпляры модели содержали уникальную запись поля , а не только значения в наборе запросов. Как отфильтровать набор запросов, чтобы экземпляры содержали только уникальные значения одного поля?

>>> dist = Language.objects.distinct()
>>> for i in dist:
>>>     print i.language     
>>> English
>>> English

>>> dist = Language.objects.values('language').distinct()
>>> for i in dist:
>>>     print i['language']     
>>> English

1 Ответ

0 голосов
/ 18 ноября 2011

Возможно, есть более эффективный способ, но первое, что приходит на ум, это:

ids = (lang['max_id'] for lang in Language.objects.values('language').annotate(max_id=Max('pk')))
results = Language.objects.filter(pk__in=ids)

В основном группировка по языку и выбор записи поля с наибольшим идентификатором для каждого языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...