问题
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?
回答1:
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
回答2:
@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']
来源:https://stackoverflow.com/questions/12382232/django-query-distinct-values-works-but-i-cant-use-the-query-result