Как реализовать таблицу Игроков, которых в разных матчах может быть разное количество?

Я реализую отображение матчей на своем сайте по Age Of Empires 2. В игре может находиться 2 или больше игроков, и, при этом, разноче количество команд. Как мне стоит реализовать БД sqlite так, чтобы матчи правильно хранились? мой models.py

    player_id = models.AutoField(primary_key=True)
    player_name = models.CharField(max_length=50)
    player_rating = models.IntegerField()
    player_rating_last_upd = models.DateTimeField(auto_now_add=False)

    def __str__(self):
        return self.player_name

    class Meta:
        ordering = ['player_rating_last_upd']


class Civilization(models.Model):
    civilization_id = models.AutoField(primary_key=True)
    civilization_name = models.CharField(max_length=25)
    civilization_meta = models.TextField(null=True)

    def __str__(self):
        return self.civilization_name


class PlayersInMatches(models.Model):
    pim_id = models.AutoField(primary_key=True)
    pim_match_id = models.IntegerField()
    pim_player_id = models.ForeignKey('Player', on_delete=models.CASCADE)
    pim_civilization_id = models.ForeignKey('Civilization', on_delete=models.CASCADE)
    color_id = models.ForeignKey('Colors', on_delete=models.CASCADE)


class Colors(models.Model):
    color_id = models.AutoField(primary_key=True)
    color_name = models.TextField()

    def __str__(self):
        return self.color_name


class Match(models.Model):
    match_id = models.ForeignKey('PlayersInMatches', on_delete=models.CASCADE)
    match_name = models.CharField(max_length=100)
    match_datetime_start = models.DateTimeField()
    match_duration = models.DateTimeField()
    match_map = models.ForeignKey('Map', on_delete=models.CASCADE)

    def __str__(self):
        return self.match_name

    class Meta:
        ordering = ['match_datetime_start']


class MatchTag(models.Model):
    match_tag_id = models.AutoField(primary_key=True)
    match_description = models.TextField()

    def __str__(self):
        return self.match_description


class MatchTagging(models.Model):
    match_tagging = models.AutoField(primary_key=True)
    match_id = models.ForeignKey('Match', on_delete=models.CASCADE)
    match_tag_id = models.ForeignKey('MatchTag', on_delete=models.CASCADE)


class Map(models.Model):
    map_id = models.AutoField(primary_key=True)
    map_name = models.CharField(max_length=50)

    def __str__(self):
        return self.map_name


class MapTagging(models.Model):
    map_tagging_id = models.AutoField(primary_key=True)
    map_tagging_map = models.ForeignKey('Map', on_delete=models.CASCADE)
    map_tagging_tag_id = models.ForeignKey('MapTag', on_delete=models.CASCADE)


class MapTag(models.Model):
    map_tag_id = models.AutoField(primary_key=True)
    map_tag_description = models.TextField()

    def __str__(self):
        return self.map_tag_description

Схема БД Я не понимаю, как сделать так, чтобы PlayerInMatch работал корректно для разного числа игроков. Может мне стоит сделать таблицу, в которой будут лежать игроки, у которых будет id матча, к которому эти игроки относятся...

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