私がしようとしているのは、一意の親/名前の組み合わせを除外するクエリセットを書くことです。私は一意の親の名前の最初の出現にのみ興味があります。Djangoでクエリーセットをフィルタリングする -
ID PARENT TYPE LIBTYPE NAME
1 1 project 1 book_a
4 4 project 2 book_b
5 4 project 2 book_c
6 4 project 2 book_d
7 4 project 4 book_c
8 5 project 2 book_e
9 5 project 4 book_e
10 7 project 0 book_f
11 7 project 0 book_g
12 7 project 6 book_h
13 6 user 1 book_i
14 6 project 1 book_j
15 6 project 1 book_k
16 7 project 5 book_h
17 7 project 8 book_h
18 7 project 7 book_h
19 7 project 9 book_h
20 7 project 1 book_h
21 8 project 1 book_a
だから我々は今、純粋なPythonで、私はちょうどこの吸盤をフィルタリングするためにこれを行うだろう。これが唯一のユーザーを削除...基本的なクエリセットで
vars = Variants.objects.filter(type="project")
を開始しました。私は、以下のIDの(1,4,5,6,8,10,11,13,14,15,21)で終わる必要があります最終的には
vars = Variants.objects.filter(type="project")
new_vars = []
for idx, var in vars.enumerate():
if var.name not in new_vars:
new_vars.append((var.parent,var.name))
else:
del vars[idx]
もちろん、私は、クエリセットに列挙することはできません私はDjangoでこれをフィルタリングする方法があると確信しています。
誰かがDjangoでこれを効率的に行う方法についていくつかの光を当てることができますか?
無関係な小さなヒント:私は 'vars'を使用して避けるだろうそれは組み込み関数をオーバーライドするので、変数/関数名として使用します。 http://docs.python.org/library/functions.html –