о аннотировать джанго - PullRequest
2 голосов
/ 30 апреля 2009

Я бы хотел создать пятерку лучших продавцов продуктов в каждом месяце.

Я слышал, что для этого случая необходимо использовать аннотации, но я не знаю, как его использовать.

Кто-нибудь будет достаточно любезен, чтобы помочь мне?

Ответы [ 2 ]

7 голосов
/ 30 апреля 2009

Вам нужно предоставить гораздо больше информации, прежде чем кто-либо сможет дать вам полезный ответ. Опишите, что вы знаете, что вы пробовали, подробно опишите, что вы надеетесь достичь.

Тем временем вы можете узнать о функции annotate() django и посмотреть несколько примеров, прочитав документацию по агрегации для django.

5 голосов
/ 30 апреля 2009

аннотировать не единственный способ сделать это. Вы также можете использовать агрегацию 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...