2012-02-13 3 views
0

Djangoでオブジェクトのセットを取得しようとしていますが、別のオブジェクトセットにそのオブジェクトが存在していません。私はそれが属しているスレッドを指定するスレッドフィールドと、彼/彼女が見たメ​​ッセージを格納するMessagesReadモデルを持つMessageモデルを持っています。私は、読んでいないメッセージ(新しいメッセージのアラート)、つまり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がここ

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

コンセプト本当に助けをmessagesread_setするrelated_nameセットとスレッドに戻って、外部キーを持っていることを前提としています。私はManyToManyフィールドに切り替わりましたが、除外は本当に重要でした。 – garromark

関連する問題