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 # 實(shí)收金額(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})
運(yùn)行后報錯,提示
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實(shí)例取出來,用時間篩選。然后Sum(所有的order.pard_in)
數(shù)據(jù)庫層面Sum所有符合時間段的訂單的paid_card, paid_cash, paid_gift
相關(guān)文章:
1. python文檔怎么查看?2. python - pycharm 自動刪除行尾空格3. 安全性測試 - nodejs中如何防m(xù)ySQL注入4. python - pandas按照列A和列B分組,將列C求平均數(shù),怎樣才能生成一個列A,B,C的dataframe5. python - Pycharm的Debug用不了6. html - eclipse 標(biāo)簽錯誤7. python 利用subprocess庫調(diào)用mplayer時發(fā)生錯誤8. 請問PHPstudy中的數(shù)據(jù)庫如何創(chuàng)建索引9. datetime - Python如何獲取當(dāng)前時間10. javascript - 有適合開發(fā)手機(jī)端Html5網(wǎng)頁小游戲的前端框架嗎?
