ソースを参照

feat :star: reduce db calls by counting offers in voucher listing

master
Samar Hassan 2年前
コミット
3daf3dda59

+ 3
- 1
src/oscar/apps/dashboard/vouchers/views.py ファイルの表示

3
 from django.conf import settings
3
 from django.conf import settings
4
 from django.contrib import messages
4
 from django.contrib import messages
5
 from django.db import transaction
5
 from django.db import transaction
6
+from django.db.models import Count
6
 from django.http import HttpResponse
7
 from django.http import HttpResponse
7
 from django.shortcuts import get_object_or_404, redirect
8
 from django.shortcuts import get_object_or_404, redirect
8
 from django.urls import reverse, reverse_lazy
9
 from django.urls import reverse, reverse_lazy
33
     def get_queryset(self):
34
     def get_queryset(self):
34
         self.search_filters = []
35
         self.search_filters = []
35
         qs = self.model._default_manager.all()
36
         qs = self.model._default_manager.all()
37
+        qs = qs.annotate(num_offers=Count('offers'))
36
         qs = sort_queryset(qs, self.request,
38
         qs = sort_queryset(qs, self.request,
37
-                           ['num_basket_additions', 'num_orders',
39
+                           ['num_basket_additions', 'num_orders', 'num_offers',
38
                             'date_created'],
40
                             'date_created'],
39
                            '-date_created')
41
                            '-date_created')
40
 
42
 

+ 2
- 2
src/oscar/templates/oscar/dashboard/vouchers/voucher_list.html ファイルの表示

90
                         <th>{% trans "Name" %}</th>
90
                         <th>{% trans "Name" %}</th>
91
                         <th>{% trans "Code" %}</th>
91
                         <th>{% trans "Code" %}</th>
92
                         <th>{% trans "Status" %}</th>
92
                         <th>{% trans "Status" %}</th>
93
-                        <th>{% trans "Num offers" %}</th>
93
+                        <th>{% anchor 'num_offers' _("Num Offers") %}</th>
94
                         <th>{% anchor 'num_basket_additions' _("Num baskets") %}</th>
94
                         <th>{% anchor 'num_basket_additions' _("Num baskets") %}</th>
95
                         <th>{% anchor 'num_orders' _("Num orders") %}</th>
95
                         <th>{% anchor 'num_orders' _("Num orders") %}</th>
96
                         <th>{% anchor 'date_created' _("Date created") %}</th>
96
                         <th>{% anchor 'date_created' _("Date created") %}</th>
114
                                     <span class="badge badge-secondary">{% trans "Inactive" %}</span>
114
                                     <span class="badge badge-secondary">{% trans "Inactive" %}</span>
115
                                 {% endif %}
115
                                 {% endif %}
116
                             </td>
116
                             </td>
117
-                            <td>{{ voucher.offers.count }}</td>
117
+                            <td>{{ voucher.num_offers }}</td>
118
                             <td>{{ voucher.num_basket_additions }}</td>
118
                             <td>{{ voucher.num_basket_additions }}</td>
119
                             <td>{{ voucher.num_orders }}</td>
119
                             <td>{{ voucher.num_orders }}</td>
120
                             <td>{{ voucher.date_created }}</td>
120
                             <td>{{ voucher.date_created }}</td>

読み込み中…
キャンセル
保存