File tree Expand file tree Collapse file tree 2 files changed +17
-4
lines changed
Expand file tree Collapse file tree 2 files changed +17
-4
lines changed Original file line number Diff line number Diff line change 1+ from django .db .models import Q
12from ninja import FilterSchema
23
34
45class AnswerFilter (FilterSchema ):
5- pass
6+ models : list [str ]
7+
8+ def filter_models (self , data ):
9+ return Q (model_answers__model_id__in = data )
Original file line number Diff line number Diff line change 1- from ninja import Router
1+ from django .db .models import Count , Q
2+ from ninja import Router , Query
23from ninja .pagination import paginate
34
5+ from apps .answer .filters import AnswerFilter
46from apps .answer .models import UserAnswer
57from apps .answer .schemas import UserAnswerSchema
68from contrib .django .ninja .pagination import ContribPageNumberPagination
1012
1113@router .get ('/answers' , response = list [UserAnswerSchema ])
1214@paginate (ContribPageNumberPagination , page_size = 4 )
13- def get_answers (request ):
14- answers = UserAnswer .objects .all ()
15+ def get_answers (request , filter : AnswerFilter = Query (...)):
16+ answers = UserAnswer .objects .prefetch_related ("model_answers" ).annotate (
17+ matching_names = Count (
18+ 'model_answers' ,
19+ filter = Q (model_answers__model_id__in = filter .models )
20+ )
21+ ).filter (
22+ matching_names = len (filter .models )
23+ )
1524 return answers
You can’t perform that action at this time.
0 commit comments