10

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

我试过

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

我得到 k.person 的“dict object has not attribute as person”

我得到 k 给了我这样的结果

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

你知道我怎样才能得到人的价值吗?

4

3 回答 3

20

它不是问题,distinct而是values(). values()为您提供您要求的值的字典。要从 dict 获取属性,您可以使用dict['attr_name'].

所以你可以试试这个:

staff = Staff.objects.all().values('person').distinct()
for k in staff:
    j = k['person']
    print j,k
于 2012-09-12T06:26:45.267 回答
4

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

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

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

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

staff = Staff.objects.all().distinct('person')
for pr in staff:
    print pr['person']
于 2012-09-12T07:17:23.717 回答
-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
于 2020-09-20T19:30:40.717 回答