LINUX.ORG.RU

[Django models]Турнирная таблица


0

1

Есть необходимость организовать вывод результатов определённого соревнования по некоторым правилам. Правила:

Места команд на первом этапе Чемпионата определяются по большей сумме набранных очков. За победу в матче команде начисляется 3 очка, за ничью – 1 очко, за поражение – 0 очков.

В случае равенства очков у двух и более команд их места определяются:

1. По результатам игр(ы) между собой:

- большему количеству набранных очков;

- лучшей разнице забитых и пропущенных мячей;

- большему количеству мячей забитых в этих играх;

- большему количеству мячей, забитых на чужом поле в этих играх;

Модели получаются такие:

# -*- coding: utf-8 -*-

from django.db import models

# Таблица "Команда" с единственным полем "название"
class Team(models.Model):
	name = models.CharField(max_length=30)
	number = models.IntegerField(null=False)

	def __unicode__(self):
		return self.name
	
# Таблица "Игра" с полем даты, внешними ключами на названия участвующих команд и поля с забитыми голами
class Games(models.Model):
	date = models.DateTimeField()
	team1 = models.ForeignKey(Team, related_name="team1")
	team2 = models.ForeignKey(Team, related_name="team2")
	team1_goals = models.IntegerField()
	team2_goals = models.IntegerField()
	
	def __unicode__(self):
		return str(self.date)

Как бы так связать название команды с забитыми ею голами? Т.е. ведь в разных играх одна и та же команда может быть указана и как team1 и как team2, а привязки кол-ва голов именно к названию никакой нет. Может быть есть возможность забивать в базу словарь?

Просто я не знаю тогда, как по-человечески организовывать выборку.

Всем заранее спасибо за помощь!:)

★★★

Последнее исправление: mega_venik (всего исправлений: 1)

# Таблица «Игра»

Ты для форума так написал или у тебя на самом деле в коде кириллица? Если второе, то я несу уже паяльник.

anonymous
()
Ответ на: комментарий от anonymous

> Ты для форума так написал или у тебя на самом деле в коде кириллица? Если второе, то я несу уже паяльник.

Естественно для форума:)

mega_venik ★★★
() автор топика
Ответ на: комментарий от anonymous

TeamGame: game_id team_id goals

Т.е. отдельную таблицу для этого создавать? И отдельно в неё данные забивать?

mega_venik ★★★
() автор топика
Ответ на: комментарий от anonymous

можно как то так, хотя это коряво

team.team1.aggregate(goals=Sum('team1_goals'))
team.team2.aggregate(goals=Sum('team2_goals'))

CFA
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.