django动态数据驱动表单字段

时间:2013-05-06 16:11:56

标签: django forms dynamic

我正在尝试构建一个票证系统,以涵盖多个部门的多个表单。每个故障单表单都有标题,日期,描述的标准字段。票证可能需要额外的字段,具体取决于表单所针对的部门,即营销可能需要您在哪里听说过我们的盒子,但帐户不会。

所以我有一个表格,将字段定义映射到表格,即(1) - 你在哪里听到TextArea ----> (45)营销表格

我希望根据他们选择的表格,我可以显示与所选表格相关的其他字段。当使用ModelForm时,它本身并没有产生这个,所以我想我必须自己做到这一点。

我的第一个想法是获取与特定表单相关的所有表单字段对象(filter(formid = marketing_form)),为它们创建字段,然后在保存整个表单之前覆盖保存函数以保存这些表单字段值。

我是Django的新手,所以不确定是否有更好的方法?

#list of all possible fields for mapping  
class Field(models.Model):
    field_id = models.IntegerField(primary_key=True)
    field_cat = models.ManyToManyField(Category)
    field_label = models.CharField(max_length=50)
    field_type = models.IntegerField(choices=FIELD_TYPE_CHOICES)
    field_enabled = models.BooleanField(default=1)

    def __unicode__(self):
        return self.field_label

#list of all fields additional fields on a ticket 
class TicketField(models.Model):
    tf_id = models.IntegerField(primary_key=True)
    tf_ticket = models.ForeignKey(Ticket)
    tf_field = models.ForeignKey(Field)
    tf_0 = models.CharField(max_length=255, blank=True)
    tf_1 = models.TextField(blank=True)
    tf_2 = models.BooleanField(blank=True)
    tf_3 = models.ForeignKey(Employees, blank=True)

0 个答案:

没有答案