Vedi questo . Il tuo codice sarebbe qualcosa di simile al seguente:
from django.db.models import Max
Argument.objects.aggregate(Max('rating'))
Puoi anche usarlo su set di query esistenti:
from django.db.models import Max
args = Argument.objects.filter(name='foo')
args.aggregate(Max('rating'))
Se hai bisogno dell'istanza del modello che contiene questo valore massimo, il codice che hai pubblicato è probabilmente il modo migliore per farlo:
arg = args.order_by('-rating')[0]
Notare che questo sarà un errore se il set di query è vuoto, cioè se nessun argomento corrisponde alla query (perché la [0]
parte solleverà un IndexError
). Se vuoi evitare quel comportamento e invece semplicemente tornare None
in quel caso, usa .first()
:
arg = args.order_by('-rating').first()