2016-11-20 10 views
0

私は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') 

答えて

0

必要な数だけモデルを作成してください。目標/ポイント/スコアの数だけが必要な場合は、ゲームモデルのフィールドに保存することができます。これらのゴール/スコアに関する追加データが必要な場合は、それらの個別のモデルを作成してください。実際にはこれに正解か間違った答えがありません - あなたはあなたが必要とするものについて考える必要があります。また、将来必要となるものとそのデータをすべて保存する方法についても把握してください。他の人の意見ではなく、ニーズに合わせてモデルを作成します。

私はアイスホッケーのアプリを書いていましたが、私たちはそれらのすべてに関するデータが必要だったので、たくさんのモデルがありました。私のアプリの主なモデルは、シーズン、レフリー、ゲーム、ゲームプレイヤー、プレーヤー、ゲームレフェリー、ゴール、罰、GamePunishment、GoalKeeperでしたが、そのすべての情報を必要としない場合は、 。

関連する問題