2016-08-23 57 views
0

我正在用表单向导构建一个多步表单,其中用户输入一些数据,如下所示:第1步:用户从下拉列表中选择类别,(我假设我需要做一些),然后应该出现一个子类别下拉菜单,在那里他会再次选择,然后对于第2步,我需要动态生成字段,根据子类别。Django表单向导嵌套动态字段创建

#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”内逐个生成。假设我在步骤1中选择车辆和汽车,步骤2应该给我,比如模型下拉列表(梅赛德斯,奥迪......),然后应该出现另一个下拉列表,这取决于我选择什么,预装奔驰模型等。有几个级别像我这里描述的嵌套下拉菜单。一直持续了一周,SO/Google没有提供任何帮助。

回答

0

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

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

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

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