Как перечислить серию моделей объектов в другой модели?
Я создаю чат-бота с двумя моделями. Модель 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