Pārlūkot izejas kodu

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 gadus atpakaļ
vecāks
revīzija
a77a493214
Revīzijas autora e-pasta adrese nav piesaistīta nevienam kontam

+ 14
- 0
sandbox/fixtures/orders.json Parādīt failu

91
     },
91
     },
92
     "model": "order.orderdiscount",
92
     "model": "order.orderdiscount",
93
     "pk": 1
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 Parādīt failu

17
     active = Column(accessor='is_active')
17
     active = Column(accessor='is_active')
18
     staff = Column(accessor='is_staff')
18
     staff = Column(accessor='is_staff')
19
     date_registered = Column(accessor='date_joined')
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
     actions = TemplateColumn(
22
     actions = TemplateColumn(
22
         template_name='oscar/dashboard/users/user_row_actions.html',
23
         template_name='oscar/dashboard/users/user_row_actions.html',
23
         verbose_name=' ')
24
         verbose_name=' ')

+ 1
- 1
src/oscar/apps/dashboard/users/views.py Parādīt failu

55
         return kwargs
55
         return kwargs
56
 
56
 
57
     def get_queryset(self):
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
         return self.apply_search(queryset)
59
         return self.apply_search(queryset)
60
 
60
 
61
     def apply_search(self, queryset):
61
     def apply_search(self, queryset):

Notiek ielāde…
Atcelt
Saglabāt