使用自制表单批量填充Django数据库模型

1 投票
1 回答
591 浏览
提问于 2025-04-18 05:22

下面的两张图片可以作为参考,你会发现一张图片有3场比赛,而另一张只有1场。这只是对encuesta模型表的调用,它会显示当天所有的比赛。

用户可以把他们对可用比赛的答案保存在respuestas模型表中。

你在图片中看到的表格是手动在模板中制作的,没有使用{{form}},只是简单地遍历查询结果并添加这些字段。

我需要做的就是把可用的字段发送到respuestas模型,以便为用户认为未来会有结果的比赛创建新行。

enter image description here

enter image description here

这应该是上面两张图片的对应字段,换句话说,表格中显示的值应该作为新行保存到那个模型表(respuestas)中。

enter image description here

这是我的models.py文件

class equipo(models.Model):

nombre = models.CharField(max_length=30)
bandera = StdImageField(upload_to='bandera/%Y/%m/%d',
                        variations={
                        'large':(53,53, False),
                        'thumbnail': (70, 26, False)})

GRUPOS = (
    ('A', 'Grupo A'),
    ('B', 'Grupo B'),
    ('C', 'Gropo C'),
    ('D', 'Gropo D'),
    ('E', 'Gropo E'),
    ('F', 'Gropo F'),
    ('G', 'Gropo G'),
    ('H', 'Gropo H'),
)

grupo = models.CharField(max_length=1, choices=GRUPOS)

def banderaEquipo(self):
    return '<img src="/media/%s">' % (self.bandera.thumbnail)

banderaEquipo.allow_tags = True

def __unicode__(self):
    return self.nombre


class encuesta(models.Model):

equipoA = models.ForeignKey(equipo, related_name='equipo_equipoA')
golesEquipoA = models.IntegerField(max_length=2, null=True, blank=True)
equipoB = models.ForeignKey(equipo, related_name='equipo_equipoB')
golesEquipoB = models.IntegerField(max_length=2, null=True, blank=True)

ETAPA = (
    ('1', 'Primera Etapa'),
    ('2', 'Octavos De Final'),
    ('3', 'Cuartos De Final'),
    ('4', 'Semifinal'),
    ('5', 'Final'),
    ('6', '3ra Posicion')
)

etapa = models.CharField(max_length=1, choices=ETAPA)
fecha = models.DateTimeField(auto_now_add=False)

def __unicode__(self):

    return "%s Vs. %s" % (unicode(self.equipoA), unicode(self.equipoB))


class respuesta(models.Model):

encuesta = models.ForeignKey(encuesta)
empresa = models.ForeignKey(empresa)
empleado = models.ForeignKey(empleado)
equipoA = models.IntegerField(max_length=1)
equipoB = models.IntegerField(max_length=1)
fecha = models.DateField(auto_now_add=True)

def __unicode__(self):

    return "%s" % (unicode(self.encuesta))

1 个回答

0

看起来你是在寻找表单集合。表单集合可以让你一次性显示和验证多个数据的表单。

撰写回答