Модели Django: игрок может играть во множество игр, а в одну игру могут играть ровно два игрока?
У меня проблема в моих моделях django...
у меня есть 2 модели (таблицы) Player и Game как отношения многие ко многим, и третья модель как промежуточная таблица между ними, которая имеет имя пользователя игрока как внешний ключ (имя пользователя является таблицей игрока pk) и game_id fk также, и дополнительный атрибут score, проблема в том, что более чем 2 игрока могут иметь одну и ту же игру, и это не то, что я хочу, что я хочу, чтобы каждая игра могла быть сыграна точно и только двумя игроками.
как этого добиться с помощью django?
Здесь представлены модели:
class Player(models.Model):
    username = models.CharField(max_length=20, primary_key=True)
    fname = models.CharField(max_length=20, blank=False)
    lname = models.CharField(max_length=20, blank=False)
    avatar = models.ImageField(upload_to='./app/avatars/', blank=True, null=True)
    is_online = models.BooleanField(default=False)
    game_theme = models.ImageField(upload_to='./app/themes/', blank=True, null=True)
    played_games_num = models.IntegerField(default=0)
    def __str__(self):
        return self.username
class Game(models.Model):
    mode_choices = {
        'classic': 'Classic',
        'vs_robot': 'Vs Robot'
    }
    difficulty_choices = {
        -1: 'Vs Player',
        1: 'Easy',
        2: 'Medium',
        3: 'Hard'
    }
    game_id = models.AutoField(primary_key=True)
    mode = models.CharField(max_length=10, choices=mode_choices)
    difficulty = models.IntegerField(choices=difficulty_choices)
    game_date_time = models.DateTimeField(auto_now_add=True)
    duration = models.IntegerField()
    players = models.ManyToManyField(Player, through='Player_game')
    def __str__(self):
        return str(self.game_id)
class Player_game(models.Model):
    username = models.ForeignKey(Player, on_delete=models.CASCADE)
    game = models.ForeignKey(Game, on_delete=models.CASCADE)
    score = models.IntegerField()
    class Meta:
        unique_together = ['username', 'game']
    def __str__(self):
            return str(self.game_id)
обращайтесь ко мне за любой дополнительной информацией.
я попытался добавить unique_together в класс Meta, но это не решило проблему
Модифицируйте модель Player_game, чтобы она имела уникальное ограничение на поле game, гарантирующее, что в каждой игре может быть только два игрока, связанных с ней. Реализуйте пользовательский метод проверки или переопределите метод сохранения, чтобы обеспечить соблюдение ограничения программно.
Нужны ли вам сложности, связанные с соединением ManyToMany игры и игрока с ограничением, что в одну игру могут играть только два игрока? 
 Возможно, вам будет проще иметь два обычных ForeignKey, скажем player1 и player2 (или black и white, где есть такая асимметрия). Если эти ключи можно обнулить, то один игрок null может описывать игрока, желающего сыграть, но ожидающего соперника. Для игры, находящейся в процессе или завершенной, требуются все три ключа.
Недостатком является то, что такая конструкция ломается, если впоследствии вы захотите ввести многопользовательские игры с разным количеством участников.
Эй, ребята, спасибо за ваше время, ваши ответы так хороши, я понял, что моя текущая реализация будет работать успешно, потому что когда новая игра начинается, она будет храниться как новая игра recoed (новый game_id), так что не будет никаких проблем. Спасибо вам еще раз, ребята <3