2016-11-20 36 views
0

我编码在Django的大型体育联盟。我有单独的体育,团队,学校和时间表。时间表模型包括主页和离开分数。这是一个基于结果的应用程序,而不是调度程序。写一个体育联盟计划“Django的方式”

我的问题是关于记录结果“Django的方式”。我可以创建节约胜损失结果的模式,但感觉就像存储不必要的数据,如果两个用户为同一游戏不同的提交分数可能是一个问题。另一种方法是使用查询并在每次调用时计算获胜/失败。

我准备好迎接挑战,但我担心,我会开始走向死胡同去。这里是我的模型,如果有帮助:

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

创建尽可能多的模型,你需要。如果你只需要目标/分/得分的数量,那么你可以将它保存到一个字段上的博弈模型。如果您需要关于这些目标/分数的额外数据,请为这些数据创建一个单独的模型。是不是真的有一个正确或错误的答案,这个 - 你只需要想想你会需要。还要弄清楚你将来可能需要什么以及如何保存所有这些数据。根据您的需求创建模型,而不是其他人的意见。

我前段时间为冰球编写了一个应用程序,我们有很多很多不同的模型,因为我们需要所有这些数据。我的应用程序的主要模型是季节,裁判,游戏,GamePlayer,玩家,GameReferee,目标,惩罚,GamePunishment和GoalKeeper,但是,如果您不需要所有这些信息,则不需要太多模型。