数据走势问题

数据走势问题

问题描述:

为什么5月14、15日都创建了订单,但5月18日查看数据走势仍是0?

相关截图:

http://img1.sycdn.imooc.com//climg/60a3ab7909c576d518860620.jpg

相关代码:master/views.py

from datetime import datetime, timedelta

from django.contrib.auth.decorators import login_required
from django.db.models import Sum, Q
from django.shortcuts import render
from django.utils.timezone import now

from accounts.models import User, Profile
from order.choices import OrderStatus
from order.models import Order
from sight.models import Sight, Comment


def get_data_count(start=None, end=None):
"""
实时统计数据
:param start: 开始时间
:param end: 结束时间
:return:
"""
query = Q()
if start:
query = query & Q(created_at__gte=start)
if end:
query = query & Q(created_at__lte=end)
order_list = Order.objects.filter(status=OrderStatus.PAID).filter(query)
user_list = Profile.objects.select_related('user').filter(user__is_active=True).filter(query)
return {
# 销售额
'order_amount': order_list.aggregate(amount=Sum('buy_amount'))['amount'],
# 订单数量
'order_count': order_list.count(),
# 新增的用户数量
'user_add_count': user_list.count(),
# 下单的用户数
'order_user_count': order_list.values('user').distinct().count()
}


def get_latest_order_stats(days=7):
"""
最近N日的订单统计
:param days: 天数
:return:
"""
date_array, amount_array, count_arry = [], [], []
now_time = now()
for x in range(days, 0, -1):
# 日期
calc_time = now_time + timedelta(hours=-x * 24)
date_array.append('{}号'.format(calc_time.day))
queryset = Order.objects.filter(status=OrderStatus.PAID,
created_at__date=calc_time.date())
result = queryset.aggregate(amount=Sum('buy_amount'), count=Sum('buy_count'))
# 订单金额
amount_array.append(result['amount'] or 0)
# 订单数量
count_arry.append(result['count'] or 0)

return {
'date': date_array,
'amount': amount_array,
'count': count_arry
}


@login_required(login_url='/admin/login/')
def index(request):
""" 统计报表 """
# 1. 数据统计
total_stats = {
'sight_count': Sight.objects.filter(is_valid=True).count(),
'comment_count': Comment.objects.filter(is_valid=True).count(),
'user_count': User.objects.filter(is_active=True).count(),
'order_count': Order.objects.filter(status=OrderStatus.PAID).count(),
}
# 2. 今日实时数据
now_time = now()
now_stats = get_data_count(start=datetime(now_time.year, now_time.month, now_time.day))

# 3. 昨天的数据
yesterday = now_time + timedelta(hours=-24)
yesterday_stats = get_data_count(
start=datetime(yesterday.year, yesterday.month, yesterday.day),
end=datetime(now_time.year, now_time.month, now_time.day)
)

# 4. 数据走势
latest_stats = get_latest_order_stats()
return render(request, 'master/index.html', {
'total_stats': total_stats,
'now_stats': now_stats,
'yesterday_stats': yesterday_stats,
'latest_stats': latest_stats
})


def test(request):
""" echarts的使用 """
return render(request, 'master/test.html')

相关代码:master/urls.py

​from django.urls import path

from master import views

urlpatterns = [
# 统计报表
path('', views.index, name='index'),
# echarts的使用
path('test/', views.test, name='test'),
]


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
时间, 2021-05-19 10:11:46

同学,你好!运行同学提供的代码数据趋势是没有问题的,同学可以看下订单表中订单的状态是否是'已支付',及订单的时间是否符合

http://img1.sycdn.imooc.com//climg/60a4737d09ce246314790420.jpg

http://img1.sycdn.imooc.com//climg/60a473b909a85ab013880335.jpg

http://img1.sycdn.imooc.com//climg/60a473d60918a61c15130167.jpg

祝学习愉快!

  • 提问者 hoitze #1

    没看到有问题,我可以发数据库文件给您看一下吗?

    2021-05-19 10:54:34
  • 时间, 回复 提问者 hoitze #2

    同学,你好!可以的。同学可以提供一下数据库文件截图。祝学习愉快!

    2021-05-19 10:57:56
  • 提问者 hoitze 回复 时间, #3

    http://img1.sycdn.imooc.com//climg/60a47f4b093f35ec13940777.jpg

    2021-05-19 11:00:29
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师