私はDjangoで大きなスポーツリーグをコーディングしています。私は、スポーツ、チーム、学校、スケジュールのために別々のテーブルを持っています。スケジュールモデルには、ホームスコアとアウェイスコアが含まれます。これは結果ベースのアプリであり、スケジューリングによるものではありません。スポーツリーグプログラム「The Django Way」の作成
私の質問は「ザンゴウェイ」の結果を記録することです。結果のモデルを作成して勝敗を節約することができますが、不要なデータを保存するような感じがあり、2人のユーザーが同じゲームで異なるスコアを送信すると問題になる可能性があります。別の方法は、クエリを使用して呼び出されるたびに勝敗を計算することです。
私は挑戦していますが、私は行き止まりに向かっていくことを心配しています。もし私が助けてくれれば、私のモデルがあります:
from django.db import models
from django.contrib import admin
class Sports(models.Model):
sport = models.AutoField(primary_key=True)
sport_name = models.CharField(max_length=225, blank=True, null=True)
class Meta:
managed = True
db_table = 'sports'
def __str__(self):
return self.sport_name
class School(models.Model):
school = models.AutoField(primary_key=True)
school_name = models.CharField(max_length=225, blank=True, null=True)
class Meta:
managed = True
db_table= 'school'
def __str__(self):
return self.school_name
class SchoolAdmin(admin.ModelAdmin):
fields = ('school_id', 'school_name')
class Teams(models.Model):
team = models.AutoField(primary_key=True)
team_name = models.CharField(max_length=225, blank=True, null=True)
sport_id = models.ForeignKey(Sports, models.DO_NOTHING, blank=True, null=True)
division = models.CharField(max_length=225, blank=True, null=True)
school = models.ForeignKey(School, models.DO_NOTHING, blank=True, null=True)
class Meta:
managed = True
db_table = 'teams'
def __str__(self):
return self.team_name
class Schedule(models.Model):
match = models.AutoField(primary_key=True)
match_date = models.DateField(blank=True, null=True)
home = models.ForeignKey(Teams, related_name='home_set', blank=True, null=True)
away = models.ForeignKey(Teams, related_name='away_set', blank=True, null=True)
home_score = models.IntegerField(blank=True, null=True)
away_score = models.IntegerField(blank=True, null=True)
class Meta:
managed = True
db_table = 'schedule'
def __str__(self):
return '%s at %s' % (self.away, self.home)
class ScheduleAdmin(admin.ModelAdmin):
model = Schedule
list_display = ('match_date', 'home', 'away', 'home_score', 'away_score')