Django Aggregation - 试图返回两个值

Posted

技术标签:

【中文标题】Django Aggregation - 试图返回两个值【英文标题】:Django Aggregation - Trying to return two values 【发布时间】:2019-11-04 23:11:32 【问题描述】:

我正在尝试使用聚合函数获取他们最近发布的用户名和文本。

我正在尝试下面的代码,但我没有得到用户名的不同值。

conversations = Chat.objects.values('user__username','body').annotate(Max('dateofpost'))

通过上面的内容,它为我提供了该用户的所有帖子,但我想要获得的是用户名以及最新发布的帖子正文。有人可以帮忙吗?

我一直在网上阅读,但找不到在这种情况下该怎么做的解释。我可以再次看到有关调用聚合/值方法的帖子,但无法使其正常工作。

【问题讨论】:

【参考方案1】:

我可以让它这样工作:

conversations_qs = Chat.objects.values('user__username').annotate(Max('dateofpost'))
conversation_dates = [conv['dateofpost__max'] for conv in conversations_qs]
conversations = Chat.objects.filter(dateofpost__in=conversation_dates)

有没有更好的方法?

【讨论】:

以上是关于Django Aggregation - 试图返回两个值的主要内容,如果未能解决你的问题,请参考以下文章

使用SQL语言了解Django ORM中的分组(group by)和聚合(aggregation)查询

Django QuerySets - 如何注释一个字段但返回另一个字段?

elasticsearch aggregation - 桶的精确计数

ElasticSearch+聚合+Aggregation+示例

MongoDB Aggregation

aggregation 详解3(bucket aggregation)