2
私はクエリーセットのフィルタされたバリエーションを取得するために一連のクエリを作成しています。私がDBに6回ぶつかるのではなく、代わりに最初の呼び出しを使用するより簡単な方法がありますか?Djangoでのクエリの結合
pages = Page.objects.all() # Page.objects.select_related() if we want filtering on related objects fields
その後、あなたは追加のDBクエリせずにページの他のタイプを取得することができます:あなたはすべてのページを取得している場合
data['os']['today'] = Page.objects.all()
data['os']['pro'] = Page.objects.filter(premium_plan=PlanType.PRO).count()
data['os']['yesterday'] = Page.objects.filter(created__lt=within_last_day).count()
data['os']['week'] = Page.objects.filter(created__lt=within_last_week).count()
data['os']['new_pro'] = Page.objects.filter(upgrade__cancelled_date__isnull=True, upgrade__activated_date=within_last_day)
data['os']['new_top_pages'] = Page.objects.filter(created__gt=within_last_day).extra(select={'total_fans':'facebook_count + twitter_count'}, order_by=('-total_fans',))[:10]