Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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 从不同的用户处获取最新消息_Python_Django_Postgresql - Fatal编程技术网

Python 从不同的用户处获取最新消息

Python 从不同的用户处获取最新消息,python,django,postgresql,Python,Django,Postgresql,假设我有两个用户,每个用户都向第三个用户发送了两条消息,如下所示: This is the first message from user 1 This is the second message from user 1 This is the first message from user 2 This is the second message from user 2 我正在尝试使用以下命令从PostgreSQL数据库中选择每个用户的最新消息: messages = Message.obj

假设我有两个用户,每个用户都向第三个用户发送了两条消息,如下所示:

This is the first message from user 1
This is the second message from user 1
This is the first message from user 2
This is the second message from user 2
我正在尝试使用以下命令从PostgreSQL数据库中选择每个用户的最新消息:

messages = Message.objects.filter(message_to=request.user).distinct('message_from')
这给了我它从每个用户那里提取的第一个对象,即

This is the first message from user 1
This is the first message from user 2 
而我想要第二个

我尝试了
messages=Message.objects.filter(Message\u to=request.user)。distinct('Message\u from','time\u date')。order\u by(
“-time_date”)
以便对它们进行排序,但这会给我所有4条消息

如何从每个用户处获取最新消息

编辑:

消息的模型

class Message(models.Model):
    message_from = models.ForeignKey(User, related_name="%(class)s_message_form")
    message_to = models.ForeignKey(User, related_name="%(class)s_message_to")
    message = models.TextField()
    files = models.ForeignKey(File, blank=True, null=True)
    read = models.BooleanField(default=False)
    time_date = models.DateTimeField(default=django.utils.timezone.now)

您可能无法获取整个
消息
对象,但您可以在一条语句中按需要在
中放置任意多的字段:

from django.db.models import Max
Message.objects.values('message_from').annotate(latest_msg=Max(time_date))

您可能无法获取整个
消息
对象,但您可以在一条语句中按需要在
中放置任意多的字段:

from django.db.models import Max
Message.objects.values('message_from').annotate(latest_msg=Max(time_date))
我想

Message.objects.filter(message_to=request.user).order_by('message_from',
        '-time_date').distinct('message_from')
我会做你想做的。

我想

Message.objects.filter(message_to=request.user).order_by('message_from',
        '-time_date').distinct('message_from')

将执行您想要的操作。

能否显示消息模型的代码?可能会有帮助。我已经完整地添加了模型的代码。您能显示消息模型的代码吗?可能会有帮助。我已经完整地为模型添加了代码。