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')
将执行您想要的操作。能否显示消息模型的代码?可能会有帮助。我已经完整地添加了模型的代码。您能显示消息模型的代码吗?可能会有帮助。我已经完整地为模型添加了代码。