如何在 Django 中按顺序列出消息
How to list messages in order in Django
所以我一直在尝试在 Django 中实现一个基本的一对一聊天系统。到目前为止,我已经创建了一个模型,它接受两个外键(发件人、收件人)和一个名为消息的 Charfield。
class message(models.Model):
sender=models.ForeignKey(User,related_name='sender2',on_delete=models.CASCADE)
receiver=models.ForeignKey(User,related_name='reciever2',on_delete=models.CASCADE)
message1=models.CharField(max_length=10000000)
现在,我可以创建消息对象,但我想做的是在一个页面上的来回对话中显示。到目前为止,我已经能够获取特定“发送者-接收者”组合的所有消息。
def view_message(request,pk):
client1=User.objects.get(id=pk)
client2=request.user
message1=message.objects.filter(sender=client1,receiver=client2).all()
return render(request,'message.html',{'messages':message1})
现在上面的视图只显示登录的单个用户的所有消息,发送给主键 used/clicked 打开的其他用户,
但我还想展示的是,他们收到的“回复”是以对话式的方式有序进行的。
希望你们明白我在这里所说的。
一对一的私人消息系统(非异步),因此页面可以刷新和重新加载所有发送和接收的消息,但顺序。
谢谢:)
你应该在你的模型中添加一个创建日期字段created_at = models.DateTimeField(auto_now_add=True)
,由于数据库的工作方式,PK 不会被完美排序(每个连接可能会被赋予一大块 PK 以供使用,这导致非完美排序,最好使用时间戳)
所以我一直在尝试在 Django 中实现一个基本的一对一聊天系统。到目前为止,我已经创建了一个模型,它接受两个外键(发件人、收件人)和一个名为消息的 Charfield。
class message(models.Model):
sender=models.ForeignKey(User,related_name='sender2',on_delete=models.CASCADE)
receiver=models.ForeignKey(User,related_name='reciever2',on_delete=models.CASCADE)
message1=models.CharField(max_length=10000000)
现在,我可以创建消息对象,但我想做的是在一个页面上的来回对话中显示。到目前为止,我已经能够获取特定“发送者-接收者”组合的所有消息。
def view_message(request,pk):
client1=User.objects.get(id=pk)
client2=request.user
message1=message.objects.filter(sender=client1,receiver=client2).all()
return render(request,'message.html',{'messages':message1})
现在上面的视图只显示登录的单个用户的所有消息,发送给主键 used/clicked 打开的其他用户, 但我还想展示的是,他们收到的“回复”是以对话式的方式有序进行的。 希望你们明白我在这里所说的。 一对一的私人消息系统(非异步),因此页面可以刷新和重新加载所有发送和接收的消息,但顺序。 谢谢:)
你应该在你的模型中添加一个创建日期字段created_at = models.DateTimeField(auto_now_add=True)
,由于数据库的工作方式,PK 不会被完美排序(每个连接可能会被赋予一大块 PK 以供使用,这导致非完美排序,最好使用时间戳)