【问题标题】:how to show if no result given date range and 0 result with django annotate?如果没有给定日期范围的结果和 django 注释的 0 结果,如何显示?
【发布时间】:2020-05-23 21:24:09
【问题描述】:

结果正确显示,但如果没有结果如何显示日期和 0 结果

pre_days = datetime.datetime.today() - timedelta(days=6)
today_now = datetime.datetime.today()
enquiry_chart = All_enquiries.objects.filter(enquired_at__range=[pre_days, today_now]).values('enquired_at__date').annotate(enquired=Count('id'))

示例

【问题讨论】:

    标签: django postgresql highcharts django-views


    【解决方案1】:

    。数据库使用最小世界假设。这意味着如果不存在数据,则它不存在。

    但是,您可以自己添加额外的值。例如:

    num_days = 6
    today_now = datetime.datetime.today()
    pre_days = today_now - timedelta(days=num_days)
    temp = All_enquiries.objects.filter(
        enquired_at__range=[pre_days, today_now]
    ).values('enquired_at__date').annotate(
        enquired=Count('id')
    )
    tempdict = {
        row['enquired_at__date']: row['enquired']
        for row in temp
    }
    
    result = [
        {
            'enquired_at__date': (pre_days+timedelta(days=k)).date(),
            'enquired': tempdict.get((pre_days+timedelta(days=k)).date(), 0)
        }
        for k in range(num_days+1)
    ]

    因此,我们首先构建一个字典,将日期映射到记录数,然后再次构建一个记录列表,我们将在其中使用零作为缺失值。

    【讨论】:

    • {'enquired_at': datetime.datetime(2020, 2, 1, 18, 45, 34, 438776), 'enquired': 0}, {'enquired_at': datetime.datetime(2020, 2, 2, 18, 45, 34, 438776), '询问': 0}, {'enquired_at': datetime.datetime(2020, 2, 3, 18, 45, 34, 438776), '询问': 0} , {'enquired_at': datetime.datetime(2020, 2, 4, 18, 45, 34, 438776), 'enquired': 0}, {'enquired_at': datetime.datetime(2020, 2, 5, 18, 45 , 34, 438776), 'enquired': 0}, {'enquired_at': datetime.datetime(2020, 2, 6, 18, 45, 34, 438776), 'enquired': 0}, {'enquired_at': datetime .datetime(2020, 2, 7, 18, 45, 34, 438776), '查询': 0}]
    • 日期显示正确但值显示 0 但在数据库中我有 10 10 条记录
    • @ManjuanthVM:是的,我犯了一个错误。我认为现在应该修复它。
    猜你喜欢
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多