Django查询不同的值有效,但我不能使用查询结果

tun*_*nak 7 python django distinct django-queryset django-views

我有一个表列,其中一些值是双写或三写的.我想要一个独特的查询.

我试过了

staff = Staff.objects.all().values('person').distinct()
for k in staff:
     j = k.person
     print j,k
Run Code Online (Sandbox Code Playgroud)

对于k.person,我得到"dict对象没有属性为人"

我得到k给我一个结果

{'person': 778L}
{'person': 779L}
{'person': 780L}
{'person': 781L}
{'person': 782L}`
Run Code Online (Sandbox Code Playgroud)

你知道我怎样才能获得这个人的价值?

Roh*_*han 12

它没有问题,distinct但有values().values()给你你要求的价值的字典.要从dict获取属性,您可以使用dict['attr_name'].

所以你可以尝试这个:

staff = Staff.objects.all().values('person').distinct()
for k in staff:
    j = k['person']
    print j,k
Run Code Online (Sandbox Code Playgroud)


Ara*_*gon 5

@Rohan是对的。dict['attr_name']会给你你想要的。

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

#it returns:
#SELECT DISTINCT "staff"."person" FROM "staff"
Run Code Online (Sandbox Code Playgroud)

除此之外,如果您使用此补丁,您可以通过以下结构实现:

staff = Staff.objects.all().distinct('person')
for pr in staff:
    print pr['person']
Run Code Online (Sandbox Code Playgroud)