gpt4 book ai didi

python - 如何获取当前用户和其他用户之间的最后一条消息?

转载 作者:行者123 更新时间:2023-11-28 17:33:31 24 4
gpt4 key购买 nike

我有一个Message django-model,有字段:

  • id(主键)
  • user_sender(用户实例的外键)
  • user_receiver(用户实例的外键)
  • 发送日期(日期时间)
  • 消息(字符)
  • 状态( bool 值)

所以,我正在尝试获取当前用户和其他用户之间的所有最后消息。

Examples:

If i have 3 users:

John send message to Sarah(17.08.2015) (id=1)

Sarah send message to John(20.08.2015) (id=2)

John send message to Max (18.08.2015) (id=3)

我只需要获取 ID 为 2 和 3 的消息。

我正在尝试这个查询,但收到了所有 3 条消息:

Message.objects.filter(
Q(user_sender_id=1) |
Q(user_receiver_id=1)).\
order_by('user_sender', 'user_receiver', '-send_date').\
distinct('user_sender', 'user_receiver')

那么,我做错了什么?为什么在使用不同的外键后我收到 3 条消息?

更新#1:

class Message(models.Model):
"""
Model for user messages.
- Who
- Whom
- When
- Message
- Status
"""
user_sender = models.ForeignKey(User, related_name="sender")
user_receiver = models.ForeignKey(User, related_name="receiver")
send_date = models.DateTimeField(auto_now_add=True)
message = models.CharField(max_length=500)
status = models.BooleanField(default=False)

def __unicode__(self):
return u'%s %s ->%s' % (self.send_date, self.user_sender, self.user_receiver)

最佳答案

sent = Message.objects.filter(user_sender_id=1).order_by('-send_date')[:1]
received = Message.objects.filter(user_receiver_id=1).order_by('-send_date')[:1]

from itertools import chain

messages = list(chain(sent, received))

关于python - 如何获取当前用户和其他用户之间的最后一条消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32673457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com