@gromyko21

Как отсортировать родительские объекты по дочерним?

Есть 2 модели:
class Chat(models.Model):
    members = models.ManyToManyField(User, verbose_name="Участник", related_name='members')


class Message(models.Model):
    author = models.ForeignKey(User, verbose_name="Отправитель", on_delete=models.CASCADE)
    recipient = models.ForeignKey(Chat, related_name='received_messages', verbose_name="Получатель", 
on_delete=models.CASCADE)

Message привязана к chat. И мне нужно отсортировать chat под последнему сообщению.
Сейчас моя сортировка работает по времени создания чата
messages = Chat.objects.order_by('-pk').filter(members=request.user)
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
@reqww
Добавь к сообщению время отправки
а по итогу сортировка будет такой:
Chat.objects.order_by('received_messages__timestamp')
Если timestamp - поле в Message типа models.DateTimeField
P.S. Возможен минус в начале
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bacon
1. добавить время последнего сообщения через annotate https://docs.djangoproject.com/en/3.1/ref/models/q... и по нему отсортировать
2. members наверно у Chat должен быть, а не у Message? А то так в каждом сообщении дублируется список участников
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы