2009-04-30 10 views
2

私は毎月トップ5のベストセラーを作りたいと思っています。annotate django

私はこのアノテーションをこのケースで使用する必要があると聞いてきましたが、使用方法はわかりません。

誰でも私を助けるのに十分な親切な人ですか?

+0

私たちにあなたの現在のコードを教えてください。もしあなたが何も持っていなければ、あなたはそれを書く過程であなた自身の質問に答えるでしょう。 – AdamKG

答えて

7

誰かがあなたに有用な答えを提供するには、より多くの情報を提供する必要があります。あなたが知っていること、試したこと、あなたが達成しようとしていることを詳しく説明してください。

djangoのannotate()関数について学ぶことができますし、djangoのaggregation documentationを読んでいくつかの例を見ることができます。

5

注釈だけではできません。 extraアグリゲーションを使用することもできますが、あまり効率的ではないかもしれませんが、これはデータベース固有のSQLに依存します。このアプローチはApp Engineでは機能しませんが、SQL準拠のデータベースで実行する必要があります。例えば

、あなたがProductモデルとSalesOrderモデルはその中の各product_idorder_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] 
関連する問題