2013-12-01 5 views
2

Как запросить, чтобы получить thread в order, у которого есть последнее сообщение .django - запрос класса по последнему созданному объекту другого класса

Редактировать:

Например:

  1. Предположим, А послал сообщение B, (Thread_1). Здесь Thread_1 находится наверху.
  2. Теперь C отправил сообщение B, (Thread_2). Здесь Thread_2 находится наверху, а Thread_1 - под ним.
  3. Опять же, A отправил сообщение B, (Thread_1). Здесь снова Thread_1 находится наверху, а Thread_2 находится под ним.

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) 

ответ

2

Попробуйте это:

from django.db.models import Max 

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

Спасибо за ответ. Но его присвоение имени 'NameError: 'Max' не определено.' – Aamu

+0

@Aamu обновлено, попробуйте сейчас – mariodev

+0

Спасибо вам большое! Я никогда не знала «аннотировать». Его действительно здорово узнать что-то новое! – Aamu

Смежные вопросы