2017-03-10 1 views
0

私はDjangoの新機能で、クエリを実行する方法です。私は今、基本を持っていると思うが、ソートの問題に悩まされている。Djangoのクエリと特定の並べ替え

pk  list_name  number_of_words 

1  vegetables  30 
2  fruits   5 
3  animals  7 
4  objects  15 
5  instruments 16 
6  fruits   28 

は今、私は彼らがnumber_of_wordsによってソートし、その後でLIST_NAMEによってグループ化することにしたい。

class Word_List(models.Model): 
    list_name = models.CharField(max_length=64) 
    number_of_words = models.IntegerField(default=0) 

は、私はいくつかのデータを持っている:

それでは、私は、この例のモデルを持っているとしましょうトップリストはグループの中で重要なものです。ここでは、私が考えているソートされた要素を持つ明確な説明:

pk  list_name  number_of_words 

1  vegetables  30 
6  fruits   28 
2  fruits   5 
5  instruments 16 
4  objects  15 
3  animals  7 

私はいくつかのことを試してみましたが、私は完全に私が何を望むかに達したことはありません。それだけでソートすべての要素に関係なく、自分の名前のように、私はこの1つしようとしたとして、それが十分ではなかった。もちろん、

sorted_lists = Word_List.objects.all().order_by('-number_of_words') 

:私はこれで起動

sorted_lists = Word_List.objects.all().order_by('list_name', -'number_of_words') 

をそして、この結果になってしまった:

pk  list_name  number_of_words 

3  animals  7  
6  fruits   28 
2  fruits   5 
5  instruments 16 
4  objects  15 
1  vegetables  30 

Aaaand私はポスト要求の基本的なPythonとマルチループを使用して並べ替えまたは多分何とか複数の要求をし、その結果を結ぶことを考えていますが、CLEがあるかもしれないように私は感じて、こだわっています美しいソリューション。

ありがとうございました。

答えて

0

これを達成する簡単な方法がある:それは文書化されていないとして、これはジャンゴの将来のバージョンで変更されることが

query = Word_List.objects.all().query 
query.group_by = ['-list_name'] 
query.order_by = ['-number_of_words'] 
sorted_list = QuerySet(query=query, model=Word_List) 

注意。未処理SQLクエリを使用して安全:

Word_List.objects.raw('SELECT * FROM appname_Word_List ORDER_BY ....') 
関連する問題