Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django Query distinct values works but i cant use the query result

I have a table column which some values are double or triple written. I want to have a distinct query.

I tried

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

I get "dict object has not attribute as person" for k.person

And I get k gives me a result like

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

Do you know how can I get the person value?

like image 967
tuna Avatar asked Sep 12 '12 06:09

tuna


2 Answers

@Rohan is right. dict['attr_name'] will give you what you want.

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

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

beside this if you use this patch, you can achieve this as following structure:

staff = Staff.objects.all().distinct('person')
for pr in staff:
    print pr['person']
like image 144
Aragon Avatar answered Sep 30 '22 14:09

Aragon


Its not problem with distinct but with values(). values() gives you dict of values you requested. And to get attribute from dict you can use dict['attr_name'].

So you can try this:

staff = Staff.objects.all().values('person').distinct()
for k in staff:
    j = k['person']
    print j,k
like image 30
Rohan Avatar answered Sep 30 '22 15:09

Rohan