按用户在Django中对私人消息进行分组

时间:2019-01-26 20:15:45

标签: django django-models django-templates django-views

我为Django中的注册用户构建了一个私人消息传递系统,但有一个小问题。我想不出一种按用户对消息进行分组的方法。

下图显示了两个用户之间的消息。这是用户 karolann 看到的对话。您会看到它不能正确地对消息进行分组。句子“ Hello Susan” “这两个模块都颇具挑战性” 应该放在最后一句话之后-“在网上给我发短信。”

现在,邮件由发件人分组。如果我按接收者分组,它仍然无法正常工作。它将需要双方都通用的东西,例如对话ID或其他东西。

所以我的问题是:如何创建对话?我希望两个用户之间的所有消息都在同一个地方。

enter image description here

我的models.py如下: enter image description here

我的views.py如下: enter image description here

最后,我的模板是: enter image description here

2 个答案:

答案 0 :(得分:0)

您应该从两个用户的角度对发送方和接收方同时应用多个过滤器,然后将它们加入。 在这种情况下,无法使用dictsort和regroup。

要获取用户/ other_user对话中的所有消息,您需要:

Message.objects.filter(sender=user.profile, reciever=other_user.profile)|Message.objects.filter(receiver=user.profile, sender=other_user.profile)

(注意|运算符可用于联合)

您应为视图中的每个会话创建这些查询,并在模板上下文中传递这些查询的列表。

答案 1 :(得分:0)

对于在Django中尝试执行此操作的人,我建议使用此解决方案-https://stackoverflow.com/a/43697388/10036828

这是我可以使其运作的唯一方法。