Использование значения из values() в фильтре набора запросов Django внутри аннотации

Я пишу запрос, который получает предложения следовать за ним в социальном приложении. Все остальные поля, которые я хочу получить в ответе API, правильные, но у меня проблема с полем followed_by в ответе API.

Чтобы определить, какой пользователь, за которым следует текущий пользователь, следует за предложенным человеком & следовательно, текущий пользователь получает предложение, у нас есть поле followed_by.

Проблема в том, что этот followed_by получает неправильное значение & выбирает 1-го человека, за которым следит текущий пользователь, который может следовать или не следовать за предложенным человеком. Значение to_user, которое я использую в значении параметра запроса, очевидно null в выражении F. Ниже приведен мой код:

my_followings = self.request.user.friends.values_list("id", flat=True)

#users that are being followed by my following users (friends of my friends)
follow_suggestions = User.friends.through.objects.exclude(
    Q(to_user=self.request.user) | Q(to_user__in=my_followings)).filter(
        from_user_id__in=my_followings).values("to_user").annotate(
            following_count=Count("to_user_id", filter=Q(from_user_id__in=my_followings)),
            id=F("to_user__id"),
            username=F("to_user__username"),
            profile_image=F("to_user__profile_fixed_url"),
            followed_by=Value(User.friends.through.objects.filter(
                to_user=F("to_user"), from_user_id__in=my_followings).first().from_user.username,
                output_field=CharField())
    ).order_by("-following_count")

Как передать фактическое значение to_user в параметр запроса to_user?

Вернуться на верх