Дивіться це . Ваш код буде приблизно таким:
from django.db.models import Max
Argument.objects.aggregate(Max('rating'))
Ви також можете використовувати це на існуючих наборах запитів:
from django.db.models import Max
args = Argument.objects.filter(name='foo')
args.aggregate(Max('rating'))
Якщо вам потрібен екземпляр моделі, який містить це максимальне значення, тоді розміщений вами код, мабуть, найкращий спосіб це зробити:
arg = args.order_by('-rating')[0]
Зверніть увагу, що це призведе до помилки, якщо набір запитів порожній, тобто якщо жоден аргумент не відповідає запиту (оскільки [0]
частина буде викликати значення IndexError
). Якщо ви хочете уникнути такої поведінки і замість цього просто повернутися None
в такому випадку, використовуйте .first()
:
arg = args.order_by('-rating').first()