2011-03-20 68 views
1

我試圖解析這個Django的代碼(不使用Django任何熟悉,我可以補充)Django中的「children__」是什麼意思?它在哪裏記錄?

Question.objects.filter(children__marked=True) 

我知道模型中含有一種叫「forum_node」與名爲「標記」的列一個表。從我所瞭解的情況來看,這個陳述提取了其所有孩子(=答案)被接受(或「標記」)的所有問題。這個魔法是如何工作的?

+0

它是「children__marked」,而不是「children__」。 – delnan 2011-03-20 15:05:00

+0

@delnan - 我認爲「children__」是一些特殊的前綴,「marked」是一個特定的列,這是應用的,因此「children__marked」。 – ripper234 2011-03-20 15:16:02

+0

不,名字只是一個名字,不管有多少下劃線在其中(好吧,兩個主要的下劃線會觸發名稱修改,但它仍然是一個標識符,儘管現在是一個更長,更隱蔽的標識符)。 – delnan 2011-03-20 15:18:41

回答

3

要了解發生了什麼事情,您應該仔細看看Django的文檔解釋query options and the object-relational mapping

children指相關模型(應該有你的question模型中根據M2M或外鍵字段名爲兒童,指示相關模型,例如node)和marked是對相關模型的字段。

2

Node模型可能包含類似:

question = models.ForeignKey(Question, related_name='children') 
marked = models.BooleanField() 

聲明:

Question.objects.filter(children__marked=True) 

只是做在兩個表的聯接,並返回Question模型至少有一個Node模型marked=True

相關問題