2017-03-17 6 views
0

タイプが割り当てられているDjangoモデルのユーザーがいるとします。Djangoモデルのリターングループ

|id|name |type| 
|--|-----|----| 
|1 | John| A | 
|2 | Doe | B | 
|3 | Jane| A | 
|4 | Mary| B | 
|5 | Jill| C | 

ユーザーモデルを照会して、ユーザーのグループを返すようにしたいとします。何かのようにUsers.group('type',count=2)私は[[@john,@jane],[@doe,@mary]]モデルを取得する必要があります。だから基本的に私はgroup byhavingをやってみたいが、まだ全モデルを手に入れている。

私はdjangoが基になるデータベースにクエリを実行させ、すべてのモデルを読み込んでフィルタを実行することで、Python側で必要なモデルを読み込むことができます。これを行う方法はありますか?

+1

このような結果をグループ化できるクエリセット構造があります。 'itertools.groupby'を使うべきです。 – ozgur

+0

@ozgur:私はそれをアップヴォートできるので、それを答えてください。 '.orderby(" type ")'のようなもので十分です。 – 9000

答えて

0

Djangoのドキュメントに記載されているように、the Django Query API filter methodはクエリーセットをフィルタリングすることができます。

私はにのような何かをするだろう、これを行うための最善の方法だと思い

user_groups = [User.objects.filter(type=group)[:2] for group in groups]

私は、これは種類ごとに別々のクエリを実行する必要がありますので、より良い方法がある願って、しかし私はそれを知らない。