Regarde ça . Votre code ressemblerait à ceci:
from django.db.models import Max
Argument.objects.aggregate(Max('rating'))
Vous pouvez également l'utiliser sur des ensembles de requêtes existants:
from django.db.models import Max
args = Argument.objects.filter(name='foo')
args.aggregate(Max('rating'))
Si vous avez besoin de l'instance de modèle qui contient cette valeur maximale, le code que vous avez publié est probablement la meilleure façon de le faire:
arg = args.order_by('-rating')[0]
Notez que cela entraînera une erreur si l'ensemble de requêtes est vide, c'est-à-dire si aucun argument ne correspond à la requête (car la [0]
partie lèvera un IndexError
). Si vous voulez éviter ce comportement et simplement revenir None
dans ce cas, utilisez .first()
:
arg = args.order_by('-rating').first()