2012-02-13 35 views
0

我试图在Django Minus中得到一组对象,它存在于另一组对象中。我有一个消息模型,它包含一个线程字段,用于指定它属于哪个线程,以及一个存储用户和他/她看到的消息的MessagesRead模型。我试图返回他/她没有阅读的消息(用于提醒新消息),即那些不是作为一对存储在MessagesRead表中的消息。Django - 对象集在另一组中存在的负数

类似以下内容:

def unread_messages(user, thread_id): 
    Message.objects.filter(
     self not in MessagesRead.objects.filter(
      message__thread_id=thread_id, 
      user=user, 
     ) 
    ) 

我能做到以上莫名其妙或有另一种方式?

回答

1

这个假设MessagesRead有一个外键回来related_name设置为thread以messagesread_set

def unread_messages(user, thread_id): 
    Message.objects.filter(
      thread_id = thread_id, 
     ).exclude(
      messagesread_set__in = MessagesRead.objects.filter(
       message__thread_id = thread_id, 
       user = user, 
      ) 
     ) 
+0

这里的概念确实帮助了。我最终切换到了ManyToMany字段,但排除非常重要。 – garromark 2012-02-13 01:23:36

相关问题