python - django 按日歸檔統(tǒng)計訂單求解
問題描述
models.py:訂單數(shù)據(jù)模型
class Order(models.Model): date = models.DateTimeField(default=timezone.now) paid_card = models.PositiveIntegerField(blank=True, null=True) paid_cash = models.PositiveIntegerField(blank=True, null=True) paid_gift = models.PositiveIntegerField(blank=True, null=True)statur = models.CharField() @property # 實收金額(paid_in) = paid_card + paid_cash + paid_gift def paid_in(self):return sum(filter(None, [self.paid_card, self.paid_cash, self.paid_gift]))
views.py: 按日歸檔統(tǒng)計每天的訂單數(shù)、訂單總額
def wx_archive(request): orders = Order.objects.filter(status=’closed’).annotate(day=TruncDay(’start_time’)).values(’day’).annotate(count=Count(’id’), total=Sum(’paid_in’)).values(’day’, ’count’, ’total’).order_by(’day’) return render(request, ’orders/archive.html’, {’orders’: orders})
運行后報錯,提示
FieldError at /orders/archive/Cannot resolve keyword ’paid_in’ into field. Choices are: count, day, id, paid_card, paid_cash, paid_gift, status
請問,我該如何統(tǒng)計每日的總 paid_in?
問題解答
回答1:你的paid_in并不是數(shù)據(jù)庫字段,很明顯不能用在SQL語句中。兩個方法:
把符合時間段的orders實例取出來,用時間篩選。然后Sum(所有的order.pard_in)
數(shù)據(jù)庫層面Sum所有符合時間段的訂單的paid_card, paid_cash, paid_gift
相關(guān)文章:
1. MySQL中無法修改字段名的疑問2. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?3. Matlab和Python編程相似嗎,有兩種都學(xué)過的人可以說說嗎4. 網(wǎng)頁爬蟲 - 用Python3的requests庫模擬登陸B(tài)ilibili總是提示驗證碼錯誤怎么辦?5. javascript - 微信小程序封裝定位問題(封裝異步并可能多次請求)6. android - QQ物聯(lián),視頻通話7. 請教各位大佬,瀏覽器點 提交實例為什么沒有反應(yīng)8. python的前景到底有大?如果不考慮數(shù)據(jù)挖掘,機(jī)器學(xué)習(xí)這塊?9. javascript - Web微信聊天輸入框解決方案10. mysql - 怎么讓 SELECT 1+null 等于 1
