如何在 django 中过滤多条消息
Posted
技术标签:
【中文标题】如何在 django 中过滤多条消息【英文标题】:how to filter multiple messages in django 【发布时间】:2022-01-17 15:38:44 【问题描述】:所以我最近对消息进行了过滤,以便在两个人之间传递所有消息
def pmessage(request, pk):
user = User.objects.get(id=pk)
message = pm.objects.filter(Q(receiver=request.user, sender=user) | Q(receiver=user, sender=request.user))
form = dmform()
context =
'message' : message,
'form' : form,
它有效,只是它将消息按类别分组,即,它会先列出满足一个条件的所有消息,而不管哪个消息先出现,这违背了我的目标。
谢谢你
已编辑 下午型号
class pm(models.Model):
sender = models.ForeignKey(User, related_name='sender', on_delete=models.CASCADE)
receiver = models.ForeignKey(User, related_name='receiver', on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True) body = models.TextField()
unread = models.BooleanField(default=False)
def __str__(self):
return f'sender:self.sender - receiver:self.receiver - self.body'
【问题讨论】:
你能分享pm
的模型吗?
我编辑了最初的问题以添加 pm 模型
所以您想检索按created
日期排序的消息? (或updated
)?
已创建,但它应该以对话的方式出现,我给你发了一条消息'a',你回复了'b'和'c',然后我发送了'd',所以它应该是 A,B ,C,D 而不是 A,D,B,C 目前的做法
【参考方案1】:
您可以使用.order_by('created')
订购消息:
def pmessage(request, pk):
message = pm.objects.filter(
Q(receiver=request.user, sender_id=pk) |
Q(receiver_id=pk, sender=request.user)
).order_by('created')
form = dmform()
context =
'message' : message,
'form' : form,
【讨论】:
我还有一个问题,不同的视图但相同的项目以上是关于如何在 django 中过滤多条消息的主要内容,如果未能解决你的问题,请参考以下文章