Я застрял с проблемой Домашнее задание и не имею понятия о дальнейших шагах. У меня есть три модели для работы с таблицей очков: Match, Score, Pointstable. Я работаю со светильниками в Match Model. И оценки Team1 и Team2 в Scores Model с их оценками. и, наконец, таблица баллов, как показано ниже. Я создал шаблон таблицы очков для обработки того же, который состоит из матчей для отдельной страны, выигранных, проигрышных, очков
моделей
class Match(models.Model):
Bat_Bowl =(('Bat', 'Bat'), ('Bat', 'Bowl'))
clubstate = models.ForeignKey('Clubstate', on_delete=models.CASCADE, default=0)
date = models.DateTimeField(default=datetime.now, blank= False)
ground = models.CharField(max_length=100)
Team1 = models.ForeignKey('TeamStructure', on_delete=models.CASCADE, related_name='team1',default = 0)
Team2 = models.ForeignKey('TeamStructure', on_delete=models.CASCADE, related_name='team2',default = 0)
Team1logo= models.ImageField(upload_to='images/', verbose_name = 'Team1 logo',default = 0)
Team2logo= models.ImageField(upload_to='images/', verbose_name ='Team2 logo',default =0)
League = models.CharField(max_length=100, default = 0)
Toss_won_by = models.ForeignKey('TeamStructure', on_delete=models.CASCADE, related_name='tosswon',default = 0)
Elected_to = models.CharField(max_length=100,choices=Bat_Bowl)
def __str__(self):
return str(self.Team1) + ' vs ' + str(self.Team2) + ' Dated on ' + str(self.date.date()) +' at ' + str(self.ground)
def toss_won(self):
return 'Toss Won by ' + str(self.Toss_won_by) + ' and elected to ' + str(self.Elected_to) + ' first'
class Score(models.Model):
matches_between = models.ForeignKey('Match',on_delete = models.CASCADE, related_name ='fixture_between')
Team1 = models.ForeignKey('TeamStructure', on_delete=models.CASCADE, related_name='teamA',default = 0)
Team2 = models.ForeignKey('TeamStructure', on_delete=models.CASCADE, related_name='teamB',default = 0)
team1Score = models.IntegerField(default = 0)
team2Score = models.IntegerField(default = 0)
def runs_gap(self):
if self.team1Score > self.team2Score:
return str(self.Team1) + ' won by ' + str(self.team1Score - self.team2Score) + ' runs '
else:
return str(self.Team2) + ' won by ' + str(self.team2Score - self.team1Score) + ' runs '
def team1_count(self):
team_count1 = {i["Team1"]: i["count"] for i in order_items.objects.values('Team1').order_by().annotate(count=Count('Team1'))}
return team_count1
def team2_count(self):
team_count2 = {i["Team1"]: i["count"] for i in order_items.objects.values('Team2').order_by().annotate(count=Count('Team2'))}
return team_count2
def __str__(self):
if self.team1Score > self.team2Score:
return str(self.Team1)
else:
return str(self.Team2)
class PointsTable(models.Model):
country = models.ForeignKey('TeamStructure', on_delete=models.CASCADE, null=True, related_name='cont')
team_won = models.ForeignKey('Score', on_delete=models.CASCADE, null=True, related_name='won')
def points_to_team(self):
points={}
points['team_won'] = 0
if self.country == self.team_won:
points[team_won] += 1
return points
def sorted_Country(self):
# logic for sorted country based on points
return
Я сделал team1_count и team1_coun2 функции для подсчета количества совпадений. например: США против Лондона -> Я рассчитываю количество США отдельно и количество Лондонов отдельно, так что США ИЛИ Лондон существует в team_count и team_count2 не пропустит и, наконец, добавит их, чтобы получить индивидуальный счет страны.
Во-вторых, в модели очков __ str __ выдает команду, которая выиграла матч. Основываясь на победе в матче, я пытаюсь рассчитать баллы для страны и отсортировать их по возрастанию в pointstable Model.
Я новичок в Django и могу понять, что мой Подход не эффективен, и я застрял здесь. Спасибо за предложения.