2012-02-10 84 views
0

如果我有代碼如下:Django的ListView控件使用反向外鍵查找

Person 

Email 
    FK(Person) 

Phone 
    FK(Person) 

Address 
    FK(Person) 

而且我想,以顯示與每個人,電話號碼,電子郵件和地址爲他們每個人一個ListView,所有的() 0]是否足夠好,我將如何創建一個QuerySet傳遞給ListView?

謝謝

回答

0

關係是一對一還是一對多?如果一對一,您可以在使用Django的aggregation功能的單個查詢中獲取所有 引用 。 (編輯:對不起,沒有參考,只有自己PKS)例如:

from django.db.models import Min 
Person.objects.all().annotate(email=Min('email'), phone=Min('phone'), address=Min('address')) 

我不知道它是否會與ListView控件很好地集成,但...也許使用OneToOneField會在這種情況下工作(甚至沒有聚合),我不確定。

如果關係是一對多的關係,恐怕您無法在單個查詢中做到這一點。您可能已經知道,給定一個Person對象,您可以使用_set後綴email_setphone_setaddress_set來獲得相關型號。但要訪問它們,您需要其他查詢(更多數據庫命中)。