我是Django的新手,我正在尝试使用Django 2.0.5构建多聊天应用,而我的模型如下:
class DateTimeModel(models.Model):
date_created = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class Room(DateTimeModel):
id = models.UUIDField(primary_key=True, default=uuid.uuid4,
editable=False
)
members = models.ManyToManyField(User)
def __str__(self):
...
class Message(DateTimeModel):
sender = models.ForeignKey(User, on_delete=models.CASCADE)
room = models.ForeignKey(Room, on_delete=models.CASCADE)
text = models.TextField()
def __str__(self):
...
我想做什么:我想要设置数据库方案,以便每条消息都知道其收件人在其所属房间中的收件人,并以某种方式存储该房间中的每个成员是否具有“看过'消息。我在尝试查看如何使其工作方面遇到困难。
提前谢谢! 艾哈迈德
答案 0 :(得分:0)
要获取邮件收件人,请使用(例如,如果我们在数据库中有一条id为= 1的邮件)
message = Message.objects.get(pk=1)
recipients = message.room.members
对于您所说的部分,您想查看谁看到了该消息。使用以下方法(这不是唯一的方法,而是一个示例):
在您的Message
模型中添加另一个字段,即ManyToMany
字段。
也许像seen = models.ManyToManyField(User)
那样,这样当您捕获事件时,也许当用户单击消息时,向服务器发送发布/获取请求,将其看到的事件通知服务器,然后在其中使用以下代码:>
message = Message.objects.get(id=POST_DATA['message_id'])
user = request.user
if user not in message.seen:
message.seen.add(user)
'''
continue with app logic
'''
我希望你有个主意。