Django表单向导嵌套动态字段创建

时间:2016-08-23 09:56:37

标签: jquery django django-formwizard

我使用表单向导构建一个多步骤表单,用户输入一些数据,如下所示:步骤1:用户从下拉菜单中选择类别,(我假设我需要做某种ajax在这里打电话?),然后应该出现一个子类别下拉列表,他会再次选择,然后在第2步我需要根据子类别动态生成字段。

#from models.py    
class Entity(models.Model):
        name = models.CharField(max_length=255)
        value_type = models.CharField(max_length=255, blank=True)
        parent = models.ForeignKey('self', blank=True, null=True)

模型用例示例:

name      value_type      parent
Vehicles  select          null
Real estate select        null
.....
Cars      select          Vehicles
Bikes     select          Vehicles
.....
Mercedes  select          Cars
Audi      select          Cars
.........
A4        null            Audi
A5        null            Audi

等。 因此,每个子类别都有一组非常特定的字段,所有字段都非常不同,具有不同的预填充值,需要逐个生成,在步骤2和#34;形式。假设我在步骤1中选择车辆和汽车,第2步应该给我,比如说模型下拉(梅赛德斯,奥迪......)然后应该出现另一个下拉列表,这取决于我选择的,预先填充梅赛德斯车型等。有几个级别像我在这里描述的嵌套下拉列表。已经坚持了一个星期,SO / Google没有任何帮助。

1 个答案:

答案 0 :(得分:0)

我使用jquery / javascript做了类似的事情,但复杂程度要低得多。您可以使用自定义js函数显示和消失所需的字段。如果顶部字段设置为Vehicle,则js可以创建下一个字段等。

您可以通过检查浏览器中的默认输出来查找向导要查找的字段名称和ID。通常nameyour_step_name-your_field_nameidid_your_step_name-your_field_name

您可能还需要在向导的donepost方法中执行一些自定义数据处理。每当我做一些复杂的向导时,我几乎都会覆盖这两个。

希望这能让你开始。如果你愿意使用jquery,可以做你想做的事。