首页 > 解决方案 > Django Aggregation - 试图返回两个值

问题描述

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

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

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

有了上面的内容,它给了我该用户的所有帖子,但我想要得到的是用户名以及最近发布的帖子的正文。任何人都可以帮忙吗?

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

标签: pythondjangodjango-modelsaggregation

解决方案


我可以让它这样工作:

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)

有更好的方法吗?


推荐阅读