如何在Django中获取相关模型上字段的最新值?

如何在Django中获取相关模型上字段的最新值?,django,django-queryset,annotate,Django,Django Queryset,Annotate,我有以下型号: class Timestamped(models.Model): created = models.DateTimeField(auto_now_add=True) modified = models.DateTimeField(auto_now=True) class Meta: abstract = True class Thread(Timestamped): user1 = models.ForeignKey(User,

我有以下型号:

class Timestamped(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True

class Thread(Timestamped):
    user1 = models.ForeignKey(User, related_name='user1')
    user2 = models.ForeignKey(User, related_name='user2')

class Message(Timestamped):
    thread = models.ForeignKey(Thread)
    text = models.CharField(max_length=255)
    sender = models.ForeignKey(User)
我有一个查询集来获取所有线程,但我还想在循环它们时显示每个线程的最新消息

我提出了以下内容来显示消息的最新时间戳

threads = Thread.objects.filter(Q(user1=request.user) | Q(user2=request.user))\
            .annotate(latest_msg=Max('message__modified')).order_by('-latest_msg')

如何显示消息文本?

如果我使用
值(“消息文本”)
,它将返回所有消息。我只想要最后发送或接收的消息。理想情况下,我想要类似于
值('message\uu text')。latest()
。您可以使用limit来完成此操作,获取最新消息,检查编辑的答案
threads = Thread.objects.filter(
            Q(user1=request.user) | Q(user2=request.user)
          ).annotate(
            latest_msg=Max('message__modified')
          ).values(
            'message__text',
            'fields you want to fetch'
          ).order_by('-latest_msg')[:1]