2012-02-13 34 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

相關問題