class User(models.Model):
name = models.CharField(max_length=189)
class Chat(models.Model):
message = models.TextField()
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="messages")
created_at = models.DateTimeField(auto_now_add=True)
这里我想做的是获取一个用户查询集,按照他们最后一条信息的时间排序,并且还需要包含用户的最后一条消息作为额外数据。
我已经尝试了以下方法。
qs = User.objects.annotate(
last_message_time=Max("messages__created_at"),
last_message=F("messages__message")
).order_by("-last_message_time")
我在这里获取的是用户的最新消息时间,而不是第一条消息。
OuterRef("id")
。 - Cyrlop