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

では問題ありませんdistinctvalues()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 に答える