Django annotate не отрабатывает
Пытаюсь решить проблему с annotate в django. Проект реализован с помощью drf. Проблема в том, что annotate не выводит желаемый результат. Так же пытался сделать через дополнительное поле в serializers.py.
models.py
class PlayersGames(models.Model):
game = models.ForeignKey(Games, related_name='game_id', blank=False, null=False, on_delete=models.DO_NOTHING)
players = models.ForeignKey(Players, related_name='player_id', blank=True, null=True, on_delete=models.DO_NOTHING)
place = models.IntegerField(blank=False, null=False)
point = models.IntegerField(blank=True, null=True)
serializer.py
class MetricGamesSerializer(serializers.ModelSerializer):
class Meta:
model = PlayersGames
fields = [
'players',
'game',
'place',
'point',
]
read_only_fields = ['created_by', 'updated_by', 'update_by_id', 'created_by_id']
view.py
class ListGamePlayedView(generics.ListAPIView):
authentication_classes = [SessionAuthentication]
permission_classes = [IsAuthenticated]
serializer_class = MetricGamesSerializer
def get_queryset(self):
user = self.request.user
queryset = PlayersGames.objects.filter(players_id=user.id).annotate(
_games=Count('game_id'),
_place=Avg('place'),
_point=Avg('point')
)
return queryset
По итогу я получаю следующий результат:
[
{
"players": 1,
"game": 1,
"place": 1,
"point": 5
},
{
"players": 1,
"game": 2,
"place": 1,
"point": 5
},
{
"players": 1,
"game": 3,
"place": 1,
"point": 5
},
...
]
Но ожидаю получить следующий результат:
[
{
"players": 1,
"game": 3,
"place": 1,
"point": 5
},
{
"players": 2,
"game": 4,
"place": 2.5,
"point": 3.5
},
...
]