J'ai vu des réponses aux deux moitiés de ma question, mais je ne sais pas comment marier les deux.Django get_FOO_display et distinct()
J'ai un modèle de livre, et un modèle traduit.
Le translatedBook a un langage mis en place comme choix de modèle de la manière habituelle:
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'),
etc
Je sais que pour obtenir « italien » je dois faire translatedBook.get_language_display sur un objet du livre .
Mais comment puis-je obtenir une liste de langues distinctes dans leur format long?
J'ai essayé:
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')
, mais je ne peux pas sembler obtenir ce que je veux - ce qui est une liste comme:
« anglais, italien, chinois simplifié, espagnol »
la lang_avail finale ci-dessus n'a pas retourné la liste des 5, il est revenu la liste des 355 (c.-à-# de livres) avec de multiples répétitions ....
- EDIT -
La réponse de Daniel m'a presque amené là-bas - en fait, il y a une erreur «les dicts sont imputables». Merci à Axiak sur l'irc django, nous utilisons la solution de Daniel à la place avec cette ligne:
langs = TargetText.objects.values_list('language', flat=True).distinct().order_by('language')
et il fonctionne.