具有多个模型实例的预填充模型 - 表单集

时间:2011-10-25 13:35:32

标签: django django-forms

我正在学习django时建立一个足球预测应用程序,并有以下模型:

class Team(models.Model):
     Name = models.CharField(max_length=30)

class Fixture(models.Model):
     HomeTeam = models.ForeignKey(Team, related_name='HomeTeamRef')
     AwayTeam = models.ForeignKey(Team, related_name='AwayTeamRef')
     HomeTeamScore = models.IntegerField(null=True, blank=True)
     AwayTeamScore = models.IntegerField(null=True, blank=True)
     Date = models.DateField()

class Player(models.Model):
     User = models.ForeignKey(User)
         DefaultHomeScore = models.IntegerField()
         DefaultAwayScore = models.IntegerField()

class Prediction(models.Model):
     Fixture = models.ForeignKey(Fixture)
     HomeTeamScore = models.IntegerField()
     AwayTeamScore = models.IntegerField()
     Date = models.DateTimeField()
     Player = models.ForeignKey(Player)

我已经填充了许多夹具对象,并且已经使用基于预测模型的模型表单集来渲染允许用户输入分数的视图。

问题是他们必须选择预测所涉及的固定装置。我想预先填充这个,以便他们得到一个灯具列表,然后进入hometeamscore和awayteamscore。这涉及预先设定Prediction.Fixture字段和Prediction.Player字段,但我不确定如何解决这个问题?

非常感谢任何帮助。

编辑:问题似乎是如何将Fixture的多个实例传递到预测模型formset中,我已经看到了传递一个但是想一次性完成所有这些的示例。 我还希望用户能够为每个夹具进行一次预测。

1 个答案:

答案 0 :(得分:5)

我认为这就是你要找的东西: https://docs.djangoproject.com/en/1.7/topics/forms/formsets/#using-initial-data-with-a-formset

您的代码看起来像这样:

initial_data = []
for fixture in fixtures:
    initial_data.append({'Player':player,'Fixture':fixture})

formset = MyPredictionFormset(initial=initial_data)

P.S。不要迂腐,但你的字段名称不符合PEP 8。它们应该是带有下划线的小写,但这是你的电话。 (http://www.python.org/dev/peps/pep-0008/