class Chat(models.Model):
def last_message(self):
return self.messages.last()
class Message(models.Model):
chat = models.ForeignKey(Chat, on_delete=models.CASCADE, related_name='messages')
text = models.TextField()
Я пытаюсь избавиться от метода "last_message", чтобы запрос всех чатов не опрашивал базу для каждого чата.
Можно ли добавить аннотированное поле (и заменить метод), чтобы в нём содержался объект сообщения?
Максимум что смог это сделать, это поправить "prefetch_related" для чата:
Chat.objects.prefetch_related(Prefetch('messages', queryset=last_messages)
В переменной 'last_messages' хранится queryset состоящий из одного объекта - последнего сообщения.
Но всё равно, чтобы его получить нужно сделать запрос в базу.