Xem này . Mã của bạn sẽ giống như sau:
from django.db.models import Max
Argument.objects.aggregate(Max('rating'))
Bạn cũng có thể sử dụng điều này trên các tập truy vấn hiện có:
from django.db.models import Max
args = Argument.objects.filter(name='foo')
args.aggregate(Max('rating'))
Nếu bạn cần phiên bản mô hình có chứa giá trị tối đa này, thì mã bạn đã đăng có lẽ là cách tốt nhất để làm điều đó:
arg = args.order_by('-rating')[0]
Lưu ý rằng điều này sẽ xảy ra lỗi nếu bộ truy vấn trống, tức là nếu không có đối số nào phù hợp với truy vấn (vì [0]
phần này sẽ nâng cao một IndexError
). Nếu bạn muốn tránh hành vi đó và thay vào đó chỉ cần quay lại None
trong trường hợp đó, hãy sử dụng .first()
:
arg = args.order_by('-rating').first()