get_queryset?
А то у меня коллизия небольшая возникла. Например при запросе http://127.0.0.1:8000/api/v1/users_statistics/?created_at_exact=2021-06-01 получаю в ответе только юзеров, создавших задачи в нужную дату, но аннотация идет по всем записям из БД, минуя родительский фильтр.
http://linkode.org/#05BCR5ANlB9EYZMuCZQti6
ты финальный запрос смотрел ?
Нет. Честно говоря, я и не знаю как вывести куда-нибудь raw sql :)
def list(self, request, *args, **kwargs): queryset = self.filter_queryset(self.get_queryset()) print(queryset.query) page = self.paginate_queryset(queryset) if page is not None: serializer = self.get_serializer(page, many=True) return self.get_paginated_response(serializer.data) serializer = self.get_serializer(queryset, many=True) return Response(serializer.data)
В принте вижу следующий запрос: SELECT "todolist_user"."id", "todolist_user"."password", "todolist_user"."last_login", "todolist_user"."is_superuser", "todolist_user"."is_staff", "todolist_user"."date_joined", "todolist_user"."firs t_name", "todolist_user"."last_name", "todolist_user"."email", "todolist_user"."is_active", COUNT("todolist_task"."id") AS "total_tasks", AVG("todolist_task"."score") AS "average_task_score", AVG("to dolist_task"."total_duration") AS "average_task_completion_hours", AVG("todolist_task"."in_progress_duration") AS "average_task_in_progress_hours" FROM "todolist_user" LEFT OUTER JOIN "todolist_task" ON ("todolist_user"."id" = "todolist_task"."user_id") INNER JOIN "todolist_task" T3 ON ("todolist_user"."id" = T3."user_id") WHERE (T3."created_at" AT TIME ZONE 'Asia/Yekaterinburg')::date = 2021-06 -01 GROUP BY "todolist_user"."id" Но после этого принта все крашится, хз где ему второй аргумент не нравится TypeError: __init__() takes 1 positional argument but 2 were given
Краш отменяется. Я не тот Response импортировал
ну суда по запросу вроде должно считаться коректно
А вот не совсем. Юзер и его задачи на выбранную дату фильтруются, а аннотация как считалась по всей таблице, так и продолжает http://linkode.org/#jMi5EneakPL0mpR36IhuH7
Обсуждают сегодня