我有一个表列,其中一些值是双写或三写的。我希望有一个独特的查询。
我试过
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}`
你知道我怎样才能获得这个人的价值?
答案 0 :(得分:10)
distinct
与values()
无关。 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