Mira esto . Su código sería algo como lo siguiente:
from django.db.models import Max
Argument.objects.aggregate(Max('rating'))
También puede usar esto en conjuntos de consultas existentes:
from django.db.models import Max
args = Argument.objects.filter(name='foo')
args.aggregate(Max('rating'))
Si necesita la instancia del modelo que contiene este valor máximo, entonces el código que publicó es probablemente la mejor manera de hacerlo:
arg = args.order_by('-rating')[0]
Tenga en cuenta que esto generará un error si el conjunto de consultas está vacío, es decir, si ningún argumento coincide con la consulta (porque la [0]
parte generará un IndexError
). Si desea evitar ese comportamiento y en cambio simplemente regresar None
en ese caso, use .first()
:
arg = args.order_by('-rating').first()