gpt4 book ai didi

python - 用 Django 中最新的相关对象进行注释

转载 作者:行者123 更新时间:2023-12-04 13:00:15 24 4
gpt4 key购买 nike

我有一个模型 Conversation和一个模型 Message .

型号Message有一个对话外键、一个文本字段和一个日期字段。

如何列出所有对话并为每个对话获取最新消息和最新消息的日期?

我想它是这样的

Conversation.objects.annotate(last_message=Max('messages__date'))

但它只会给我最新的日期。我要 last_message包含最后一条消息的文本和它的创建日期。也许我需要使用 prefetch_related?

最佳答案

从 Django 1.11 开始,你可以使用 Subqueries expressions :

latest_message = Subquery(Message.objects.filter(
conversation_id=OuterRef("id"),
).order_by("-date").values('value')[:1])

conversations = Conversation.objects.annotate(
latest_message=latest_message,
)

关于python - 用 Django 中最新的相关对象进行注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30528268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com