我有一个Message django模型,带有字段:
所以,我正在尝试获取当前用户和其他用户之间的所有最新消息。
示例:
如果我有3个用户:
[约翰向莎拉发送消息(17.08.2015)(id = 1)
萨拉发送消息给约翰(20.08.2015)(id = 2)
[约翰向马克斯发送消息(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')
所以,我在做什么错?为什么在使用distinct by外键后我收到3条消息?
UPD#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))
要获取当前用户和其他用户之间的所有最后一条消息: