Фильтр объектов Q возвращает неправильный набор запросов - унаследованные отношения внешних ключей

У меня есть модели User, Club, Investment и Match, где User может сделать несколько Investments, связанных с Clubs, которые имеют несколько Matches.

Я хочу запросить все матчи клубов, в которые инвестирует пользователь.

Модели

# User is Django base user

# Club
class Club(models.Model):
    """
    A table to store all clubs participating
    """
    country = models.ForeignKey(Country, on_delete=models.CASCADE, null=True)
    name = models.CharField(max_length=30)


# Investment
class Investment(models.Model):
    """
    A table to store all investments of an investor/user and associated clubs
    """
    investor = models.ForeignKey(User, on_delete=models.CASCADE)
    target = models.ForeignKey(Club, on_delete=models.CASCADE)


# Match
class Match(models.Model):
    """
    A table to store matches and their results
    """
    home = models.ForeignKey(Club, on_delete=models.CASCADE, related_name='home_team')
    away = models.ForeignKey(Club, on_delete=models.CASCADE, related_name='away_team')

Идея запроса на человеческом языке:

Запрос всех матчей, где "домашний" или "гостевой" клуб является "инвестиционной" "целью" "пользователя"

Вид

def render_dashboard_overview(request):

    qs_matches = Match.objects.filter(
        Q(home__investment__investor=request.user) |
        Q(away__investment__investor=request.user)
    )

    context = {
        'qs_matches': qs_matches
    }

    return render(request, 'dashboard/dashboard_overview.html', context)

Вот что я придумал, но возвращает набор клубов, а не совпадения...

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