Я видел ответы на обе половины моего вопроса, но я не могу понять, как выйти замуж за двоих.Django get_FOO_display and distinct()
У меня есть модель книги и модель переведенного кода.
translatedBook имеет язык сайта создать в качестве модели выбора обычного способа:
LANGUAGES = (
(u'it', u'Italian'),
(u'ja', u'Japanese'),
(u'es', u'Spanish'),
(u'zh-cn', u'Simplified Chinese'),
(u'zh-tw', u'Traditional Chinese'),
(u'fr', u'French'),
(u'el', u'Greek'),
(u'ar', u'Arabic'),
(u'bg', u'Bulgarian'),
(u'bn', u'Bengali'),
и т.д.
Я знаю, что, чтобы получить «итальянский» Я должен сделать translatedBook.get_language_display на объекте книги ,
Но как я могу получить список отдельных языков в их длинном формате?
Я пробовал:
lang_avail = TargetText.objects.values('language').distinct().order_by('language')
lang_avail = TargetText.objects.distinct().order_by('language').values('language').
lang_avail = TargetText.objects.all().distinct('language').order_by('language')
, но я не могу показаться, чтобы получить то, что я хочу, - который представляет собой список, как:
«английский, итальянский, упрощенный китайский, испанский»
окончательный lang_avail перечисленные выше, не возвращает список из 5, он возвратил список 355 (т.е. # книг) с несколькими повторами ....
- EDIT -
Ответ Даниэля почти заставил меня туда - как выясняется, это порождает ошибку «дикты, которые не сотрясаются». Благодаря Axiak на Джанго ИРЦ, мы используем решение Дэниела с этой линией вместо:
langs = TargetText.objects.values_list('language', flat=True).distinct().order_by('language')
и она работает.