Python 来自每个(发送方、接收方)对的最后消息-django
这是我的models.py文件Python 来自每个(发送方、接收方)对的最后消息-django,python,django,django-rest-framework,orm,Python,Django,Django Rest Framework,Orm,这是我的models.py文件 class Message(models.Model): sender = models.ForeignKey(User, related_name='user_sent_msgs', on_delete=models.CASCADE) receiver = models.ForeignKey(User, related_name='user_received_msgs', on_delete=models.CASCADE) text =
class Message(models.Model):
sender = models.ForeignKey(User, related_name='user_sent_msgs', on_delete=models.CASCADE)
receiver = models.ForeignKey(User, related_name='user_received_msgs', on_delete=models.CASCADE)
text = models.CharField(max_length=255)
sent = models.DateTimeField(auto_now_add=True)
我需要列出每个聊天(发送者、接收者)对的最后一条消息,如:
id sender receiver text sent
1 user1 user2 hi ...
78 user3 user1 ... ...
322 user11 user1 ... ...
1231 user1 user4 ... ...
以下是生成该列表的代码:
def get_queryset(self):
users = set()
msgs = Message.objects.filter(Q(sender=user) | Q(receiver=user)).order_by('-sent')
res = []
for msg in msgs:
if msg.sender == user and msg.receiver.id not in users:
users.add(msg.receiver.id)
res.append(msg.id)
elif msg.receiver == user and msg.sender.id not in users:
users.add(msg.sender.id)
res.append(msg.id)
self.queryset = Message.objects.filter(pk__in=res).order_by('-sent')
上面的代码正在运行,但正在寻找更专业、更干净的python(django orm)代码
有没有最优的解决方案