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

六月ゝ 毕业季﹏ 提交于 2019-12-01 02:02:23

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!