回答編集履歴

2

fixed typo\.

2017/06/20 15:57

投稿

tell_k
tell_k

スコア2120

test CHANGED
@@ -1,4 +1,4 @@
1
- クエリを2げることにはなりますが、こんな感じでしょうか。
1
+ クエリを複数げることにはなりますが、こんな感じでしょうか。
2
2
 
3
3
 
4
4
 

1

よくない例だったので修正

2017/06/20 15:57

投稿

tell_k
tell_k

スコア2120

test CHANGED
@@ -2,34 +2,24 @@
2
2
 
3
3
 
4
4
 
5
-
6
-
7
-
8
-
9
- ```Python
5
+ ````python
10
-
11
- # 20歳以下のメンバーが10人以上いるチームを抽出
12
6
 
13
7
  qs = (
14
8
 
15
- Member.objects
9
+ Team.objects
16
10
 
17
- .values('team_id')
11
+ .annotate(member_count=Count('member__id'))
18
12
 
19
- .annotate(member_count=Count('team_id'))
20
-
21
- .filter(age__lte=20, member_count__gte=10)
13
+ .filter(member__age__lte=20, member_count__gte=10)
22
14
 
23
15
  )
24
16
 
25
- for row in qs:
17
+ for team in qs:
26
18
 
27
- print(row['team_id'], row['member_count'])
19
+ print('Team.id:{}, MemberCount: {}'.format(team.id, team.member_count))
28
20
 
29
- # 対象のチームに所属してる20歳以下のメンバーを取得
21
+ for member in team.member_set.filter(age__lte=20).all():
30
22
 
31
- for member in Member.objects.filter(team_id=row['team_id'], age__lte=20):
23
+ print('Member.id:{}'.format(member.id))
32
-
33
- print(member.name)
34
24
 
35
25
  ```