仅在发生对话时过滤用户

时间:2017-09-05 09:21:32

标签: python django backend

这是我的模特

class Message(models.Model):
sender = models.ForeignKey(User, related_name="sender")
receiver = models.ForeignKey(User, related_name="receiver")
msg_content = models.TextField()

如果我们在社交网络上看到,当前用户向他们发送了消息或者他们向当前用户发送了消息时,我该如何过滤掉用户?

我试过这样的事情

users = Message.objects.filter(Q(sender=request.user) | Q(receiver=request.user))

但它不起作用。当对话发生时,它会过滤用户相同的次数。

当我使用

Message.objects.filter(Q(sender=user) | Q(receiver=user)).distinct('sender')

引发错误“此数据库后端不支持DISTINCT ON字段”(sqlite3)

请帮我这个代码。提前谢谢!

1 个答案:

答案 0 :(得分:1)

用户喜欢这样的东西:
users = User.objects.filter(sender__receiver__pk= request.user.id)

users = User.objects.filter(sender__receiver= request.user)
它返回向当前用户发送消息的所有用户!