Django: смешивание моделей и modelForms в одной строке таблицы

Я создаю инструмент для организации турниров и пытаюсь отобразить запланированные матчи в таблице, где каждая строка представляет матч, а столбцы - player1, player1score, player2, player2score, player3, player3score и "Submit Match Result".

Итак, я бы хотел, чтобы записи player1, player2 и player3 в таблице были именами трех игроков в матче (которые уже определены ранее, когда матч был запланирован), в то время как я хочу, чтобы три поля очков были полями ввода. Таким образом, пользователь вводит три оценки игроков и нажимает кнопку "отправить", которая затем должна обновить матч в базе данных, изменив его с "запланированного" на "завершенный" и записав три оценки.

У меня проблема в том, как сделать эту смесь данных из модели Match и из модели MatchForm.

Мой класс матча:

class Match(models.Model):
    status = models.CharField(max_length=256, default='Scheduled')
    player1 = models.ForeignKey(Player, on_delete=models.CASCADE, related_name = 'player1')
    player2 = models.ForeignKey(Player, on_delete=models.CASCADE, related_name = 'player2')
    player3 = models.ForeignKey(Player, on_delete=models.CASCADE, related_name = 'player3')
    player1score = models.IntegerField(default=0)
    player2score = models.IntegerField(default=0)
    player3score = models.IntegerField(default=0)

И моя MatchForm:

class MatchForm(forms.ModelForm):
    class Meta():
        model = Match
        fields = ('player1score', 'player2score', 'player3score')

Для иллюстрации идеи того, что я хочу, вот HTML того, что я пытался сделать, прежде чем понял, что мне, вероятно, следует использовать ModelForm:

  <table>
     {% for m in scheduled_matches %}
       <form class="" action="/" method="post">{% csrf_token %}
         <tr>
           <td>{{ m.player1 }}</td>
           <td><input type="number" name="player1score" value="" id="player1score"></td>
           <td>{{ m.player2 }}</td>
           <td><input type="number" name="player2score" value=""></td>
           <td>{{ m.player3 }}</td>
           <td><input type="number" name="player3score" value=""></td>
           <td><input type="submit" id="button submit-match-{{ m.id }}-button" name="submit-button" value="Submit Match Result"></input></td>
         </tr>
       </form>
     {% endfor %}
   </table>

Надеюсь, кто-нибудь сможет помочь мне сориентироваться в том, как построить нужную мне структуру. Заранее спасибо ;)

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