2011-03-20 20 views
0

看看這個Django的代碼:如何在django中編寫這個連接?

filtered = Question.objects.filter(children__marked=True).distinct() 
return Question.objects.exclude(id__in=filtered) 

它返回的所有問題的列表,除了那些有一個接受的(標記)的答案。我試圖讓它回覆問題以及upvoted的答案。看到這個SQL連接:

SELECT * from forum_node AS questions 

JOIN forum_node AS answers 
ON 
questions.node_type = 'question' AND 
answers.node_type = 'answer' AND 
answers.parent_id = questions.id 

WHERE 
answers.score > 0 or answers.marked 

現在,我怎麼翻譯這個連接到Django的?

回答

1
answered = Question.objects.filter(children__marked=True).distinct() 
unanswered = Question.objects.exclude(id__in=answered) 
upvoted = Question.objects.filter(children__score__gt=0).distinct() 
return unanswered | upvoted 
+0

幾乎 - 我實際上需要'Question.objects.exclude(id__in =(answers | upvoted))' – ripper234 2011-03-20 15:42:45