122 votes

Comment faire SELECT MAX dans Django ?

J'ai une liste d'objets, comment puis-je exécuter une requête pour donner la valeur maximale d'un champ :

J'utilise ce code :

def get_best_argument(self):
    try:
        arg = self.argument_set.order_by('-rating')[0].details
    except IndexError:
        return 'no posts'
    return arg

l'indice est un nombre entier

1voto

Sona Pochybova Points 31

Pour peut-être améliorer la réponse de @afahim en ce qui concerne le commentaire de @Raydel Miranda, si vous voulez un commentaire aléatoire. Si vous voulez tous les commentaires, alors utilisez seulement le filtre

from django.db.models import Max

# Find the maximum value of the rating and then get the record with that rating. 
# Notice the double underscores in rating__max
max_rating = App.objects.aggregate(Max('rating'))['rating__max']
return App.objects.filter(rating=max_rating).first()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X