我試圖解析這個Django的代碼(不使用Django任何熟悉,我可以補充)Django中的「children__」是什麼意思?它在哪裏記錄?
Question.objects.filter(children__marked=True)
我知道模型中含有一種叫「forum_node」與名爲「標記」的列一個表。從我所瞭解的情況來看,這個陳述提取了其所有孩子(=答案)被接受(或「標記」)的所有問題。這個魔法是如何工作的?
我試圖解析這個Django的代碼(不使用Django任何熟悉,我可以補充)Django中的「children__」是什麼意思?它在哪裏記錄?
Question.objects.filter(children__marked=True)
我知道模型中含有一種叫「forum_node」與名爲「標記」的列一個表。從我所瞭解的情況來看,這個陳述提取了其所有孩子(=答案)被接受(或「標記」)的所有問題。這個魔法是如何工作的?
要了解發生了什麼事情,您應該仔細看看Django的文檔解釋query options and the object-relational mapping。
children
指相關模型(應該有你的question
模型中根據M2M或外鍵字段名爲兒童,指示相關模型,例如node
)和marked
是對相關模型的字段。
的Node
模型可能包含類似:
question = models.ForeignKey(Question, related_name='children')
marked = models.BooleanField()
聲明:
Question.objects.filter(children__marked=True)
只是做在兩個表的聯接,並返回Question
模型至少有一個Node
模型marked=True
。
它是「children__marked」,而不是「children__」。 – delnan 2011-03-20 15:05:00
@delnan - 我認爲「children__」是一些特殊的前綴,「marked」是一個特定的列,這是應用的,因此「children__marked」。 – ripper234 2011-03-20 15:16:02
不,名字只是一個名字,不管有多少下劃線在其中(好吧,兩個主要的下劃線會觸發名稱修改,但它仍然是一個標識符,儘管現在是一個更長,更隱蔽的標識符)。 – delnan 2011-03-20 15:18:41