【问题标题】:Total user in a day and in a week一天和一周的用户总数
【发布时间】:2021-04-07 17:03:36
【问题描述】:

我想获取一天和一周内加入的用户总数,我尝试如下

member_in_day = User.objects.exclude(is_staff=True)\
    .annotate(day=TruncDay('date_joined')).values('date_joined') \
    .annotate(total_members=Count('date_joined')) \
    .order_by('-date_joined')
member_in_week = User.objects.exclude(is_staff=True)\
    .annotate(week=TruncWeek('date_joined')).values('date_joined') \
    .annotate(total_members=Count('date_joined')) \
    .order_by('-date_joined')

模型是用户,我得到的输出对于两个查询都是相同的,而不是一天它也给其他查询集。如何将今天的总数和本周的总数作为模板

<QuerySet [{'date_joined': datetime.datetime(2020, 12, 28, 16, 47, 40, 509134, tzinfo=<UTC>), 'total_members': 1}, {'date_joined': datetime.datetime(2020, 12, 23, 11, 8, 19, 241355, tzinfo=<UTC>), 'total_members': 1}, {'date_joined': datetime.datetime(2020, 12, 23, 11, 6, 14, 20673, tzinfo=<UTC>), 'total_members': 1}, {'date_joined': datetime.datetime(2020, 12, 22, 9, 25, 45, 14632, tzinfo=<UTC>), 'total_members': 1}, {'date_joined': datetime.datetime(2020, 12, 22, 9, 24, 25, 819750, tzinfo=<UTC>), 'total_members': 1}, {'date_joined': datetime.datetime(2020, 12, 20, 12, 7, 37, 59113, tzinfo=<UTC>), 'total_members': 1}]> members

【问题讨论】:

    标签: django django-queryset django-orm


    【解决方案1】:

    你不应该使用date_joined,而是在你截断之后使用dayweek,所以:

    member_in_day = User.objects.exclude(is_staff=True).values(
        day=TruncDay('date_joined')
    ).annotate(
        total_members=Count('date_joined')
    ).order_by('-day')

    members_in_week:

    member_in_week = User.objects.exclude(is_staff=True).values(
        week=TruncWeek('date_joined')
    ).annotate(
        total_members=Count('date_joined')
    ).order_by('-week')

    【讨论】:

    • @Biju:你:模板应该关心业务逻辑,只关心渲染逻辑上,您应该在视图中执行此操作,并将其传递给模板。
    • ), 'total_members': 1}, {'week': datetime .datetime(2020, 12, 21, 0, 0, tzinfo=), 'total_members': 4}, {'week': datetime.datetime(2020, 12, 14, 0, 0, tzinfo=), 'total_members': 1}]> 成员
    • ), 'total_members': 1}, {'day': datetime .datetime(2020, 12, 23, 0, 0, tzinfo=), 'total_members': 2}, {'day': datetime.datetime(2020, 12, 22, 0, 0, tzinfo= >), 'total_members': 2}, {'day': datetime.datetime(2020, 12, 20, 0, 0, tzinfo=), 'total_members': 1}]> 成员
    • 这是当前输出
    • @Biju:你可以遍历查询集,比如{% for item in myqs %}{{ item.week }}: {{item.total_members }}{% endfor %}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 2021-12-16
    • 2010-10-21
    • 1970-01-01
    • 2021-12-27
    • 2021-07-21
    • 1970-01-01
    相关资源
    最近更新 更多