我想要做的是编写一个查询集,过滤出独特的父/名组合。我只对第一次出现一个独特的父母名称感兴趣。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
所以我们开始一个基本的查询集..
vars = Variants.objects.filter(type="project")
这移出孤独的用户。现在在纯Python我只想做这个筛选这个傻逼。
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]
我到底应该结束了,下面的ID(1,4,5,6,8,10,11,13,14,15,21)很显然,我不能在查询集枚举再加上我相信有一种方法可以在Django中进行过滤。
有人可以请讲解如何有效地在Django中做到这一点?
一个不相关的小窍门:我会避免使用'vars'作为变量/函数名称,因为它会覆盖内置函数。见http://docs.python.org/library/functions.html –