I’m trying to create a messaging app. This is what I did so far. Here’s my model,
class Message(models.Model): sender = models.ForeignKey(User, related_name="sender") receiver = models.ForeignKey(User, related_name="receiver") msg_content = models.TextField() created_at = models.DateTimeField(auto_now_add=True)
Now I can filter the messages between request.user
& any user but couldn’t re-order the messages based upon the fact that if request.user
sends someone a message the person whom he send a message his name should appear at the top or if some send a message to request.user
his name should appear at the Top. As we see on social networks.
This is what I tried,
users = User.objects.filter(Q(sender__receiver=request.user) | Q(receiver__sender=request.user)).annotate(Max('receiver')).order_by('-receiver__max')
This code is working fine only when request.user
sends someone a message, whom request.user
sends a message his name re-orders at the Top but It’s not changing the ordering of messages in case if someone sends a message to request.user
.
I also tried,
users = Message.objects.filter(sender=request.user, receiver=request.user).order_by("created_at")
But, I could’t filter out the distinct users. It’s showing equal number of users as messages.
How can I solve this issue?
Thank You!