2016-03-05 52 views
0

如何鏈接django查詢集中的兩個類。例如,我有一個班人員和班級部門。一個人擁有屬性薪水,而一個部門擁有屬性領導者。我如何做一個查詢,給我一個部門領導的薪水。如何製作使用兩個類的django查詢集?

我很高興的任何幫助:)

+0

你想要什麼樣的查詢?因爲queryset由對象組成,所以你想要的是不同的東西。舉個更具體的例子 –

+0

我正在尋找類似於:a = Person.objects.filter(salary = 100) – Dannad

+0

答案已經在下面。但下次請更清楚。 –

回答

1

你不需要特殊的查詢時,Department對象的屬性leader,您可以訪問完整的Person對象,其所有的屬性:

department = Department.objects.get(pk=1) 
print(department.leader.salary) 

上面的代碼在幕後會生成兩個SQL查詢器。爲了確保只有一個查詢發出,你可以選擇使用select_related

department = Department.objects.select_related('leader').get(pk=1) 
print(department.leader.salary) 

這樣Django將原始查詢(而不是等待,直到它是通常的「懶」的方法在獲取有關領導的Person對象信息實際需要)。然而,這只是一種優化,通常不是真正需要的時間。


如果您要篩選使用現場來自全國各地的關係對象的查詢集,你可以使用the __ notation,代表兩種模式之間的關係:

departments = Department.objects.filter(leader__salary=100) 
+0

非常感謝! – Dannad