@gromyko21

Сортировка объектов foreign_key?

Пытаюсь сделать сортировку чатов по последнему сообщению(последнее сообщение вверху списка).
Модель
class Chat(models.Model):
    creater = models.ForeignKey(User, on_delete=models.CASCADE)
    members = models.ManyToManyField(User, verbose_name="Участник", related_name='members', default=User)


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)

view
body_chat = body_chat.order_by('-received_messages__pk')

    for chat in body_chat:
        chat_id = get_object_or_404(Chat, id=chat.id)
        message = Message.objects.order_by('-pk').filter(recipient=chat_id)[0:1]
        chat.message = message

Шаблон
{% for chat in body_chat %}
        <h7>Вы: {{ chat.message.0.content }}</h7>
{% endfor %}

При такой сортировке, на каждое отправленное сообщение, шаблон создает новый чат. Но если делать сортировку например вот так : body_chat = Chat.objects.filter(members=request.user).order_by('-pk') то он ничего лишнего не создает, но сортировка идет соответственно по pk.
Как можно устранить?
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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