django - 通过另一个类的最新创建对象查询类

时间:2013-12-01 21:12:12

标签: django django-models django-orm

如何查询以获取thread中包含最新消息order

修改

例如:

  1. 假设,A向B发送了一条消息,(Thread_1)。这里的Thread_1位于顶部。
  2. 现在,C向B发送了一条消息,(Thread_2)。这里Thread_2位于顶部,Thread_1位于其下方。
  3. 再一次,A向B发送了一条消息,(Thread_1)。同样,Thread_1位于顶部,Thread_2位于其下方。
  4. models.py:

    class Thread(models.Model):
        user = models.ManyToManyField(User)
    
    class Message(models.Model):
        thread = models.ForeignKey(Thread)
        sent_date = models.DateTimeField(default=datetime.now)
        body = models.TextField()
        user = models.ForeignKey(User)
    

1 个答案:

答案 0 :(得分:2)

试试这个:

from django.db.models import Max

Thread.objects.annotate(max_sent_date=Max('message_set__sent_date')).order_by('-max_sent_date')