如何处理多个实例的表单集?

时间:2019-05-20 06:33:40

标签: python django formset

我正在为比赛经理建立比赛系统。我有一个“匹配”模型和“设置”模型(下面的代码)。首先,我想使用一种表格来重新组合与一场比赛相关的所有集合,我该怎么做?其次,如果我的模板中有多个匹配项,该如何处理?

models.py

class Match(models.Model):
    isFinished  = models.BooleanField(default=False)
    team1Win    = models.BooleanField(default=False)
    team2Win    = models.BooleanField(default=False)
    phase       = models.ForeignKey(Phase, default=None, on_delete=models.CASCADE)
    teams       = models.ManyToManyField(Team, default=None, blank=True)

class Set(models.Model):
    timeSet     = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True)
    scoreTeam1  = models.IntegerField(null=True)
    scoreTeam2  = models.IntegerField(null=True)
    match       = models.ForeignKey(Match, default=None, on_delete=models.CASCADE)

models.py

class SetUpdateForm(forms.ModelForm):

    class Meta:
        model = Set
        fields = [
            'scoreTeam1',
            'scoreTeam2',
            'match',
        ]

编辑: 我创建了表单集,等等...一切都很好,但是我想在提交表单集之前进行一些验证,我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以做的是创建一个inlineformset,它将映射Match和所有相关Set。

首先,您需要匹配和所有相关的集合:

timeline:${app.id}-${user.id}

请注意,如果没有首先保存Match实例(用于创建),则无法保存表单集。