2016-08-23 91 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,可以做你想做的事情。