2012-09-12 72 views
4

我有一個表列,其中一些值是雙重或三重寫。我想有一個明確的查詢。Django查詢不同值的作品,但我不能使用查詢結果

我試圖

staff = Staff.objects.all().values('person').distinct() 
for k in staff: 
    j = k.person 
    print j,k 

我得到「字典對象不是人的屬性」爲k.person

我也得到ķ給我像

{'person': 778L} 
{'person': 779L} 
{'person': 780L} 
{'person': 781L} 
{'person': 782L}` 

你的結果知道如何獲得人的價值?

+0

「k」 是一個字典。訪問k ['人'] – auny

+0

現在'values_list()' – JulienD

回答

10

它與distinct沒有問題,但與values()values()爲您提供了您所請求的值的字典。從字典中獲得屬性,你可以使用dict['attr_name']

所以,你可以試試這個:

staff = Staff.objects.all().values('person').distinct() 
for k in staff: 
    j = k['person'] 
    print j,k 
+0

謝謝。那完全解決了 – tunaktunak

0

@Rohan是正確的。 dict['attr_name']會給你你想要的。

staff = Staff.objects.all().values('person').distinct() 
print staff.query 

#it returns: 
#SELECT DISTINCT "staff"."person" FROM "staff" 

旁邊這個,如果你使用這個patch,你可以做到這一點如下結構:

staff = Staff.objects.all().distinct('person') 
for pr in staff: 
    print pr['person']