В университете в рамках проекта мы должны разработать систему лиг с Django.У меня запущено основное приложение, а также уже настроены мои модели.
from django.db import models
from datetime import datetime
# Create your models here.
class Player(models.Model):
vorname = models.CharField(max_length=30)
nachname = models.CharField(max_length=50)
created_on = models.DateTimeField(auto_now_add=True)
email = models.EmailField()
class Liga(models.Model):
name = models.CharField(max_length=50)
participants = models.ManyToManyField(Player)
created_on = models.DateTimeField(auto_now_add=True)
is_active = models.BooleanField(default=False)
is_completed = models.BooleanField(default=False)
class Game(models.Model):
liga = models.ForeignKey(Liga, on_delete='DO NOTHING')
player1 = models.CharField(max_length=100)
player2 = models.CharField(max_length=100)
score_pl1 = models.IntegerField(blank=True)
score_pl2 = models.IntegerField(blank=True)
is_completed = models.BooleanField(default=False)
completed_on = models.DateTimeField(auto_now_add=True)
Теперь, когда я создал новую лигу в административной области, я хочу, чтобы Django автоматически создал экземпляры Game (которые могут бытьнесколько).Я пробовал несколько разных способов сделать это, но не смог решить эту проблему.Когда я создаю экземпляр Liga, я хочу, чтобы метод ниже был вызван.Метод создает все игры с определенным количеством игроков.Каждая игра должна делать ставки, хранящиеся в базе данных, используя модель игры.
player = ['Max', 'Sebastian', 'Tim', 'Bernd', 'Klaas', 'Kyle', 'Andreas', 'Jürgen']
def create_games(players):
n = len(players)
for i in range(0,n):
print('--------------------------')
print('Gameday ' + str(i+1))
print('--------------------------')
if i == len(players)-1:
game = [players[i], players[0]]
else:
game = [players[i], players[n-1]]
print(game)
for k in range(1, n//2):
game = [players[(i+k) % (n-1)], players[(i-k)%(n-1)]]
print(game)
print(' ')
liga1 = create_games(player)
Пример вывода create_games:
--------------------------
Gameday 1
--------------------------
['Max', 'Jürgen']
['Sebastian', 'Andreas']
['Tim', 'Kyle']
['Bernd', 'Klaas']
--------------------------
Gameday 2
--------------------------
['Sebastian', 'Jürgen']
['Tim', 'Max']
['Bernd', 'Andreas']
['Klaas', 'Kyle']
--------------------------
Gameday 3
--------------------------
['Tim', 'Jürgen']
['Bernd', 'Sebastian']
['Klaas', 'Max']
['Kyle', 'Andreas']
--------------------------
Gameday 4
--------------------------
['Bernd', 'Jürgen']
['Klaas', 'Tim']
['Kyle', 'Sebastian']
['Andreas', 'Max']
--------------------------
Gameday 5
--------------------------
['Klaas', 'Jürgen']
['Kyle', 'Bernd']
['Andreas', 'Tim']
['Max', 'Sebastian']
--------------------------
Gameday 6
--------------------------
['Kyle', 'Jürgen']
['Andreas', 'Klaas']
['Max', 'Bernd']
['Sebastian', 'Tim']
--------------------------
Gameday 7
--------------------------
['Andreas', 'Jürgen']
['Max', 'Kyle']
['Sebastian', 'Klaas']
['Tim', 'Bernd']
--------------------------
Gameday 8
--------------------------
['Jürgen', 'Max']
['Sebastian', 'Andreas']
['Tim', 'Kyle']
['Bernd', 'Klaas']