Python 如果发生对话,则筛选出用户

Python 如果发生对话,则筛选出用户,python,django,Python,Django,这是我的模型 class Message(models.Model): sender = models.ForeignKey(User, related_name="sender") receiver = models.ForeignKey(User, related_name="receiver") msg_content = models.TextField() 只有当前用户向他们发送了消息,或者他们向当前用户发送了消息(如我们在社交网络上看到的),我如何才能过滤出

这是我的模型

class Message(models.Model):
    sender = models.ForeignKey(User, related_name="sender")
    receiver = models.ForeignKey(User, related_name="receiver")
    msg_content = models.TextField()
只有当前用户向他们发送了消息,或者他们向当前用户发送了消息(如我们在社交网络上看到的),我如何才能过滤出用户?

您可以与对象结合使用,这允许您进行更复杂的查询(在您的情况下,是表达式):

>>来自django.db.models import Q
>>>user=request.user#取当前用户
>>>Message.objects.filter(Q(发送方=用户)| Q(接收方=用户))#过滤发送方或接收方为当前用户的消息
尝试以下方法: 1.user\u obj=user.objects.filter(发送方\接收方\主键=request.user.id)
2.users=User.objects.filter(sender\u receiver=request.User)

先生,我甚至使用了.distinct(),但为什么它过滤掉用户的次数与发送的邮件数相等?@ShivamKumarDodval我想你应该使用
.distinct('sender')
。先生,这引起了一个错误“NotImplementedError at/messages/,DISTINCT ON fields不受此数据库后端的支持”。我当前使用的是sqlite3。@ShivamKumarDodval那么我认为您应该执行与异或,而不是与或。请看以下内容:
>>> from django.db.models import Q
>>> user = request.user  # Take the current user
>>> Message.objects.filter(Q(sender=user) | Q(receiver=user))  # Filter messages where the sender or the receiver is the current user
<QuerySet [...]>