我有一个django查询,它给了我一个错误的查询集。从下面的单个查询中,它应该给我1-0=1,但是它给我0个结果。为什么会这样?你知道吗
>>> MessageThread.objects.filter(message__recipient=p2)
[<MessageThread: message thread one>]
>>> MessageThread.objects.filter(message__status='deleted', message__recipient=p2)
[]
>>> MessageThread.objects.filter(message__recipient=p2)
.exclude(message__status='deleted', message__recipient=p2)
[]
如何构建查询以获取query1-query2?这就是我在sql中需要的:
SELECT * FROM messaging_messagethread
WHERE id NOT IN
(SELECT DISTINCT thread_id FROM messaging_message
WHERE status = 'deleted' AND recipient_id=4)
未测试(显然,因为我没有在本地安装您的项目),但这应该可以:
注意:我没有添加
distinct
子句,因为它不一定适用于排序,而且我不知道您是否在模型中使用了排序。你知道吗在exclude或filter参数中放置的查找在解析为SQL语句时被AND。因此,在您上次的查询中,您正在这样做(用英语):
所以基本上,你排除了你过滤的东西。如果要获取所有未删除的收件人为“p2”的邮件,可以执行以下操作:
编辑好的,现在我知道你需要什么了。所以你基本上只需要你的问题的排除部分。我想你需要这个:
相关问题 更多 >
编程相关推荐