【发布时间】:2023-02-09 16:27:17
【问题描述】:
所以我正在关注一个关于如何创建聊天应用程序的 Youtube 视频。然后它建立了一个我不明白的模型。这是我遇到的 Message 模型,无法理解它是如何工作的。
class Message(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user')
sender = models.ForeignKey(User, on_delete=models.CASCADE, related_name='from_user')
recipient = models.ForeignKey(User, on_delete=models.CASCADE, related_name='to_user')
body = models.TextField()
date = models.DateTimeField(auto_now_add=True)
is_read = models.BooleanField(default=False)
def send_message(from_user, to_user, body):
sender_message = Message(user=from_user, sender=from_user, recipient=to_user, body=body, is_read=True)
sender_message.save()
recipient_message = Message(user=to_user, sender=from_user, recipient=from_user, body=body, is_read=True)
recipient_message.save()
return sender_message
def get_message(user):
users = []
messages = Message.objects.filter(user=user).values('recipient').annotate(last=Max('date')).order_by('-last')
# filter by user=the login user, recipient=the sender, the lastest message from each sender, order the lastest message by sender using time
for message in messages:
users.append({
'user': User.objects.get(pk=message['recipient']),
'last': message['last'],
'unread': Message.objects.filter(user=user, recipient__pk=message['recipient'], is_read=False).count(),
})
return users
我了解 Message 模型的不同领域,但我不明白为什么它在 send_message() 函数中创建消息模型的两个实例。一个用于发件人消息,另一个用于收件人消息。
recipient_message = Message(user=to_user, sender=from_user, recipient=from_user, body=body, is_read=True)
然后对于recipient_message我不清楚为什么recipient字段设置为from_user而不是to_user??
谁能帮我解决这个问题?
我很困惑这个消息模型是如何工作的。
【问题讨论】:
标签: python django django-models messaging