如何在django中过滤多条消息

how to filter multiple messages in django

所以我最近做了一个消息过滤器,以便将两个人之间的所有消息都带到


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}'

您可以使用 .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)
    )<strong>.order_by('created')</strong>
    form = dmform()
    context = {
        'message' : message,
        'form' : form,
    }