我想在每个月创造出五大畅销产品。
我听说这个案例必须使用注释,但我不知道如何使用它。
有人会善意帮助我吗?
答案 0 :(得分:7)
在任何人为您提供有用的答案之前,您需要提供更多信息。描述你所知道的,你曾尝试过的,详细阐述你希望实现的目标。
同时,您可以了解django的annotate()
函数,并通过阅读django的aggregation documentation来查看一些示例。
答案 1 :(得分:5)
注释不是唯一的方法。您也可以使用extra
聚合,虽然它可能效率不高,但这将依赖于特定于您的数据库的sql。此方法在App Engine中不起作用,但应在SQL兼容的数据库中起作用。
例如,假设您有Product
模型和SalesOrder
模型,其中SalesOrder
模型的每个product_id
和order_date
都有一个订单项在它。
top_products = Product.objects.extra(
select={'num_orders':'select count(product_id) from app_product where app_salesorder.order_date > thirty_days_ago and app_product.id = app_salesorder.product_id'})
.order_by('-num_orders')[:5]