我对 Python 和 Django 都是新手,所以如果这个问题有点简单,请原谅。
我正在编写一个小应用程序来跟踪台球比赛的比分。我不需要解释所有细节,但涉及的基本对象是:
球队有球员比赛是在两支球队(主场和客场)之间比赛有一系列比赛。每场比赛在两名球员(每队一名)之间进行,不包括已经参加比赛的球员。
我制作了以下模型:
class Team(models.Model):
team_id = models.IntegerField(unique=True, max_length=5, blank=False,validators=[validate_five_digits])
name = models.CharField(max_length=50, blank=False, null=False)
class Player(models.Model):
id = models.IntegerField(unique=True, max_length=5, blank=False,validators=[validate_five_digits])
team = models.ForeignKey(Team, blank=True, null=True)
first_name = models.CharField(max_length=50, blank=False, null=False)
last_name = models.CharField(max_length=50, blank=False, null=False)
alias_name = models.CharField(max_length=50, blank=True, null=True)
current_handicap = models.IntegerField()
class Match(models.Model):
date = models.DateField(blank=False, null=False)
location = models.CharField(max_length=255, blank=True, null=True)
table_size = models.CharField(max_length=50, blank=True, null=True)
home_team = models.ForeignKey(Team, related_name='home_team', blank=True, null=True)
away_team = models.ForeignKey(Team, related_name='away_team', blank=True, null=True)
class Game(models.Model):
match = models.ForeignKey(Match, blank=False, null=False)
match_sequence = models.IntegerField(blank=True, null=True)
player1 = models.ForeignKey(Player,related_name='player1', blank=False, null=False)
player2 = models.ForeignKey(Player,related_name='player2', blank=False, null=False)
player1_handicap = models.IntegerField(null=True, blank=True)
player2_handicap = models.IntegerField(null=True, blank=True)
我已经成功地制作了视图和模型表单来添加/编辑团队、球员和比赛。比赛列表显示在表格中,每行 1 场比赛......现在我想添加一个按钮来添加新游戏。
我的计划是让按钮转到如下所示的网址:
game/new/?match_id=1 (or something like that)
现在对于我感到困惑的部分......当你去添加一个新游戏时,我想显示 3 个选择字段,并且只有 3 个选择字段。第一选择字段应显示尚未参加本场比赛的主队球员 第二选择字段应显示尚未参加比赛的客队球员 第三选择字段将只有两个选择(主队和客队) )....并会指示哪个玩家首先射击。
然后,当用户单击提交时,它需要创建一个 Game() 对象,其中包含查询字符串中的 match_id、比赛的下一个序列号,并且 Player1 = 主客场球员,基于第三个选择字段。
我完全不知道应该怎么做……我应该使用forms.Form还是ModelForm?
有什么建议或骨架代码可以提示我吗?
提前感谢您对这样一个新手问题的帮助!
保罗