Фильтр объектов 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)
Вот что я придумал, но возвращает набор клубов, а не совпадения...