Search code examples
pythondjangomessage

Filtering out the database for multiple foreign key


Here's my Model

class Message(models.Model):
sender = models.ForeignKey(User, related_name="sender")
receiver = models.ForeignKey(User, related_name="receiver")

How can I filter out the messages between two users? I did something like this, it's giving the messages separately, I couldn't filter out them in one list as we see on social sites.

data1 = Message.objects.filter(sender_id=id, receiver_id=request.user.id)
data2 = Message.objects.filter(receiver_id=id, sender_id=request.user.id)

Please help me with this code. Thanks in advance!


Solution

  • I think you should use Q in this case. Something like this:

    from django.db.models import Q
    
    data = Message.objects.filter(
        Q(sender_id=id,receiver_id=request.user.id) | Q(sender_id=request.user.id,receiver_id=id)
    )