我有一个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/