Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 来自每个(发送方、接收方)对的最后消息-django_Python_Django_Django Rest Framework_Orm - Fatal编程技术网

Python 来自每个(发送方、接收方)对的最后消息-django

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 =

这是我的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 = 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)代码

有没有最优的解决方案