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