代码之家  ›  专栏  ›  技术社区  ›  Sreekanth Reddy Balne

如何使用django为数据库中的一列计算具有相同值的连续行?

  •  0
  • Sreekanth Reddy Balne  · 技术社区  · 7 年前

    我的应用程序由一个通知模块组成。如果通知是从同一个用户连续收到的,我想显示“来自john doe的n个通知”。

    如:

    5 notifications from john doe
    2 notification from james
    4 notofications from john doe
    

    如何使用django orm计算列中具有相同值的连续行?

    2 回复  |  直到 7 年前
        1
  •  0
  •   shafik    7 年前

    假设你有一个模型 Notifications 还有另一个名为 User .然后你可以分组 user_id

    q=Notifications.objects.filter(user__id=1).values('user__first_name', 'user_id').annotate(c=Count('user__id'))
    
        2
  •  0
  •   Ken4scholars    7 年前

    正如上面Shafikur的回答,但我想你会有一些东西表明通知是新的或尚未阅读。那么,让我们在过滤器中再添加一块:

    q=Notification.objects.filter(user__id=1, status='new').values('user__first_name', 'user_id').annotate(c=Count('user__id'))
    

    不确定如何跟踪模型中的新通知,因此这只是一个粗略的猜测,您应该能够将其应用于特定情况