Django查询过滤器排除重复的项目

时间:2014-06-26 10:54:41

标签: python django

我想像这样过滤消息

messages = Message.objects.filter(who_id=logged_user) | Q(whose_id=logged_user)

我的结果=

who : 1 , whose : 2
who : 2 , whose : 1
who : 1 , whose : 2
who : 2 , whose : 1
who : 1 , whose : 3

但我想要这个结果

who : 1 , whose : 2
who : 1 , whose : 3

我的模特

class Message(models.Model):
    uuid = UUIDField(auto=True)
    who = models.ForeignKey(User,blank=True,related_name="who_%(class)s_objects")
    whose = models.ForeignKey(User,blank=True,related_name="whose_%(class)s_objects")
    message = models.TextField()
    time = models.DateTimeField(auto_now=True)

如何排除所有其他结果?

1 个答案:

答案 0 :(得分:0)

您的查询

messages = Message.objects.filter(who_id = logged_user)| Q(= whose_id logged_user)

返回以下所有消息:

  • 有who_id = logged_user或
  • 拥有which_id = logged_user。

根据您的问题,您似乎只需要

消息
  • 有who_id = logged_user

messages = Message.objects.filter(who_id = logged_user)

应该有用。

如果那不是您所追求的,请指明查询的逻辑。