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

时间:2012-09-12 06:19:40

标签: python django django-views distinct django-queryset

我有一个表列,其中一些值是双写或三写的。我希望有一个独特的查询。

我试过

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

我为“k.person”获得“dict对象没有属性为人”

我得到k给我一个像

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

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

3 个答案:

答案 0 :(得分:10)

distinctvalues()无关。 values()为您提供所要求的值的字典。要从dict获取属性,您可以使用dict['attr_name']

所以你可以试试这个:

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

答案 1 :(得分: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']

答案 2 :(得分:-1)

query = Entity.objects.filter(field=x).order_by('field').distinct('field_name')

distinct('field_name') not supported? you can do the following.


----------


    query = Entity.objects.filter(field_name=value).order_by('field')

    copy1 = []

    copy2 = []
for data in query:
    if data.field_name not in copy1:
            copy1.append(data.field_name)
            copy2.append(data)


    query = copy2