Django-对象集减去另一个集中的存在

Django-对象集减去另一个集中的存在,django,django-models,Django,Django Models,我试图得到Django中的一组对象减去它在另一组对象中的存在。我有一个消息模型,其中一个线程字段指定它所属的线程,另一个消息读取模型存储用户和他/她看到的消息。我正在尝试返回他/她尚未阅读的邮件(用于新邮件的提醒),即那些未成对存储在MessagesRead表中的邮件 如下所示: def unread_messages(user, thread_id): Message.objects.filter( self not in MessagesRead.objects.fi

我试图得到Django中的一组对象减去它在另一组对象中的存在。我有一个消息模型,其中一个线程字段指定它所属的线程,另一个消息读取模型存储用户和他/她看到的消息。我正在尝试返回他/她尚未阅读的邮件(用于新邮件的提醒),即那些未成对存储在MessagesRead表中的邮件

如下所示:

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

我可以以某种方式执行上述操作吗?或者有其他方法吗?

这假设MessagesRead有一个外键返回到线程,并将
related_name
设置为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,
            )
        )

这里的概念真的很有用。最后我转到了一个很多领域,但排除确实很重要。