2009-04-30 3 views
2

나는 매 달 제품 상위 5 위를 만들고 싶습니다.annotate django

이 경우 특수 효과를 사용해야한다고 들었지만 사용 방법을 모르겠습니다.

아무도 나를 도울만큼 친절하지 않습니까 ??

+0

현재 코드를 알려주십시오. 당신이 아무 것도 없다면, 당신은 그것을 쓰는 과정에서 당신 자신의 질문에 답할 것입니다. – AdamKG

답변

7

누구든지 유용한 답변을 제공하기 전에 훨씬 더 많은 정보를 제공해야합니다. 자신이 알고있는 것, 시도한 것을 설명하고, 성취하고자하는 것을 정교하게 설명하십시오.

한편 django의 annotate() 기능에 대해 알아보고 django의 aggregation documentation을 읽으면 몇 가지 예를 볼 수 있습니다.

5

주석을 달 수있는 유일한 방법은 아닙니다. 매우 효율적이지는 않지만 extra 집계를 사용할 수도 있습니다. 이는 데이터베이스에 특정한 sql에 의존합니다. 이 접근 방식은 App Engine에서는 작동하지 않지만 SQL 호환 데이터베이스에서 작동해야합니다. 예를 들어

, 당신은 Product 모델과 SalesOrder 모델 product_id과의 order_date 각 광고 항목이있는 SalesOrder 모델을 가지고 말한다.

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] 
관련 문제