2009-12-30 5 views
1

내가 그런 모델이 있다고 : Foo.objects.filter()과 같은 몇 가지 질의를 수행 한 후장고, 그룹화 질의 항목

class Foo(models.Model): 
name = models.CharField("name",max_length=25) 
type = models.IntegerField("type number") 

를, 나는 같은 그룹에 쿼리 결과를 원하는 :

[ [{"name":"jb","type:"whiskey"},{"name":"jack daniels","type:"whiskey"}], 
[{"name":"absolute","type:"vodka"},{name:"smirnoff ":"vodka"}], 
[{name:"tuborg","type":beer}] 
] 

볼 수 있듯이 항목을 사전 목록으로 그룹화합니다. 그룹 쿼리 목록도 환영합니다 :)에게 것 intead 사전의 나열

감사

당신은 검색어 세트의 values 방법으로이 작업을 수행 할 수 있습니다

답변

2

itertools.groupby()을 사용하여보기에서 그룹화를 수행 할 수 있습니다.

1

당신은 종류의 order_by 사용하여이 작업을 수행 할 수 있습니다

Foo.objects.order_by("type"); 
drinks = Foo.objects.all() 

이제 유형별로 정렬 된 음료의 배열을 가지고있다. 이것을 사용하거나 선형 스캔으로 정렬하지 않고 원하는 구조를 생성하는 함수를 작성할 수 있습니다.

2

regroup 템플릿 태그를 확인하십시오. 템플릿에 표시하기 위해 그룹화를 수행하려면 원하는 항목이어야합니다. 그렇지 않으면 소스를 읽고 그룹화를 수행하는 방법을 확인할 수 있습니다.