Ver código fonte

Merge pull request #4061 from samar-hassan/samar/optimise-user-order-count

[FEAT] Optimize order count calculation in user listing page
master
Voxin Muyli 2 anos atrás
pai
commit
a77a493214
Nenhuma conta vinculada ao e-mail do autor do commit

+ 14
- 0
sandbox/fixtures/orders.json Ver arquivo

@@ -91,5 +91,19 @@
91 91
     },
92 92
     "model": "order.orderdiscount",
93 93
     "pk": 1
94
+},
95
+{
96
+    "fields": {
97
+        "user": 1,
98
+        "num_product_views": 1,
99
+        "num_basket_additions": 1,
100
+        "num_orders": 1,
101
+        "num_order_lines": 1,
102
+        "num_order_items": 1,
103
+        "total_spent": 7.99,
104
+        "date_last_order": "2014-10-10T13:07:36.499Z"
105
+    },
106
+    "model": "analytics.userrecord",
107
+    "pk": 1
94 108
 }
95 109
 ]

+ 2
- 1
src/oscar/apps/dashboard/users/tables.py Ver arquivo

@@ -17,7 +17,8 @@ class UserTable(DashboardTable):
17 17
     active = Column(accessor='is_active')
18 18
     staff = Column(accessor='is_staff')
19 19
     date_registered = Column(accessor='date_joined')
20
-    num_orders = Column(accessor='orders__count', orderable=False, verbose_name=_('Number of Orders'))
20
+    num_orders = Column(accessor='userrecord__num_orders', default=0,
21
+                        verbose_name=_('Number of Orders'))
21 22
     actions = TemplateColumn(
22 23
         template_name='oscar/dashboard/users/user_row_actions.html',
23 24
         verbose_name=' ')

+ 1
- 1
src/oscar/apps/dashboard/users/views.py Ver arquivo

@@ -55,7 +55,7 @@ class IndexView(BulkEditMixin, FormMixin, SingleTableView):
55 55
         return kwargs
56 56
 
57 57
     def get_queryset(self):
58
-        queryset = self.model.objects.all().order_by('-date_joined')
58
+        queryset = self.model.objects.select_related('userrecord').order_by('-date_joined')
59 59
         return self.apply_search(queryset)
60 60
 
61 61
     def apply_search(self, queryset):

Carregando…
Cancelar
Salvar