首页 > 解决方案 > 包含需要在 Django 中预先排序的多对多字段的排序对象

问题描述

我有这两个模型:

class Message(models.Model):
    content = models.TextField()
    timestamp = models.DateTimeField(auto_now_add=True)

class Chat(models.Model):
    title = models.CharField(max_length=255)
    messages = models.ManyToManyField('Message')

如何按每个聊天中的最后一条发送消息对聊天进行排序?

标签: pythondjangodjango-models

解决方案


您可以通过相关sChat的最后一个(最大值)对对象进行排序:timestampMessage

from django.db.models import Max

Chat.objects.annotate(
    last_message=Max('messages__timestamp')
).order_by('-last_message')

推荐阅读