我使用表单向导构建一个多步骤表单,用户输入一些数据,如下所示:步骤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没有任何帮助。
答案 0 :(得分:0)
我使用jquery / javascript做了类似的事情,但复杂程度要低得多。您可以使用自定义js函数显示和消失所需的字段。如果顶部字段设置为Vehicle
,则js可以创建下一个字段等。
您可以通过检查浏览器中的默认输出来查找向导要查找的字段名称和ID。通常name
为your_step_name-your_field_name
,id
为id_your_step_name-your_field_name
。
您可能还需要在向导的done
和post
方法中执行一些自定义数据处理。每当我做一些复杂的向导时,我几乎都会覆盖这两个。
希望这能让你开始。如果你愿意使用jquery,可以做你想做的事。