Как перечислить серию моделей объектов в другой модели?

Я создаю чат-бота с двумя моделями. Модель Message, которая будет хранить все сообщения, отправленные всеми пользователями боту, как необработанные данные без фильтров. Вторая модель, представляющая чат, которая должна быть приватной и специфичной для пользователя.

Таким образом, мне нужно хранить сообщения внутри этого чата, но записи, относящиеся только к пользователю чата. Итак, с одной стороны, у меня есть модель, в которой один объект равен одному сообщению, с другой стороны, мне нужна вторая модель, хранящая только сообщения пользователя.

class Message(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
    room = models.CharField(max_length=1000)
    media = models.BooleanField(default=False)
    mediasrc = models.CharField(max_length=1000, default=None)

class Chat(models.Model):
    userchat = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
    name = models.CharField(max_length=200, blank=True)
    group = models.BooleanField(default=False)
    messages = models.ManyToManyField(Message, blank=True, related_name='userchat')
    last_modified = models.DateTimeField(auto_now=True)

Моя проблема заключается в том, что эта вторая модель (модели чата) перечисляет все существующие сообщения. Мне нужно задать фильтр для поля ManyToManyField.

Используя отношения Django, вы можете получить связанные Message объекты с Chat объектом с помощью простого вызова метода:

chat = Chat.objects.get(id=1)  # get chat object of your choice
chat.messages.all()  # returns all messages - only related to that Chat object
Вернуться на верх