Я пытаюсь найти лучшее решение в django ORM для типичной проблемы поиска лучших комбинаций связанных данных.У меня есть следующие модели:
class Player (models.Model):
nickname = models.CharField(max_length=200)
class Match (models.Model):
winner = models.IntegerField()
class MatchPlayer(models.Model):
player = models.ForeignKey(Player)
match = models.ForeignKey(Match)
team = models.IntegerField()
Итак, по сути, у нас есть матчи определенной игры, где две команды с более чем 1 человеком играют друг против друга, и всегда есть 1 победитель (1 команда, несколькоигроки).
Команды не имеют фиксированного состава, то есть игроки, которые играют в качестве союзников в игре, могут играть за врагов в следующей игре (или вообще не играть).
Iхотите найти ПАРУ игроков (или, в идеале, в более общем виде, любого N игроков) с самым высоким процентом выигрыша, когда они играют вместе (или, опять же, в идеале, парами игроков и их процентом выигрыша) в django.
Обычно в SQL я присоединяюсь к столу игрока с самим собой, где matchplayer_1.match = matchplayer_2.match и matchplayer_1.player! = Matchplayer_2.player группируют по полям обоих игроков и получают информацию о match.winner.Однако в Django, насколько я знаю, я не могу произвольно соединить таблицу с самим собой, если в модели нет явных отношений.
Есть ли способ обойти эту проблему?
Заранее спасибо!
Бруно
(Обновление: добавлены модели выше)