Max和Min:获取指定对象的最大值和最小值。
1. 比如:想要获取Author表中的最大的年龄和最小的年龄。示例代码如下:
from django.http import HttpResponse from .models import Author from django.db.models import Max, Min from django.db import connection def index(request): # Max和Min result = Author.objects.aggregate(max_age=Max('age'),min_age=Min('age')) print(result) return HttpResponse("success !")
输出结果:
{'max_age': 57, 'min_age': 34}
同样可以打印出django底层使用的原生SQL语句:
print(connection.queries)
[{'sql': 'SELECT @@SQL_AUTO_IS_NULL', 'time': '0.000'}, {'sql': 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED', 'time': '0.000'}, {'sql': 'SELECT MAX(`author`.`age`) AS `max_age`, MIN(`author`.`age`) AS `min_age` FROM `author`', 'time': '0.000'}]
2.比如:我们想要获取每一种图书预定时的最高价格和最低价格。示例代码如下:
from django.http import HttpResponse from .models import Author,Publisher,Book,BookOrder from django.db.models import Avg,Count,Sum, Max, Min from django.db import connection def index(request): # 获取每一种图书预定价格的最高值和最低值 books = Book.objects.annotate(max_price=Max('bookorder__price'), min_price=Min('bookorder__price')) for book in books: print("%s,最高价格:%s,最低价格:%s" % (book.name,book.max_price, book.min_price)) # 打印出结果: # 三国演义,最高价格:104.0,最低价格:99.0 # 水浒传,最高价格:115.0,最低价格:100.0 # 红楼梦,最高价格:105.0,最低价格:99.0 # 西游记,最高价格:None,最低价格:None return HttpResponse("success !")
来源:https://www.cnblogs.com/guyan-2020/p/12257672.html