2016-08-23 7 views
0

私はフォームウィザードを使用して、ユーザーがデータを入力するマルチステップフォームを構築しています。ステップ1:ユーザーはドロップダウンからカテゴリを選択します一種のAJAXコールここ?)、サブカテゴリのドロップダウンが現れるはずです。ここで再び選択すると、ステップ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つずつ生成されます。ステップ1でステップ2でステップ2で車と車を選んだとすると、モデルドロップダウン(メルセデス、アウディなど)が表示され、メルセデスのモデルなどにあらかじめ選んだ別のドロップダウンが表示されます。ここで説明したようなネストされたドロップダウンのこれに一週間拘束されていた、SO/Googleからの何も助けなかった。

答えて

0

jquery/javascriptを使用して、私は似たようなことをしましたが、それほど複雑ではありません。カスタムjs関数を使用して、必要なフィールドを表示して消滅させることができます。トップフィールドがVehicleに設定されている場合、jsは次のフィールドなどを作成することができます。

ブラウザでデフォルト出力を調べることによって、ウィザードが探しているフィールド名とIDを見つけることができます。通常nameyour_step_name-your_field_nameであり、idid_your_step_name-your_field_nameである。

また、ウィザードのdoneおよびpostメソッドでカスタムデータ処理を行う必要があります。私は、ウィザードで何か複雑なことをするたびに、これらの両方をかなり上書きします。

うまくいけば、それはあなたを始めます。あなたがjqueryを使いたいなら、あなたがやろうとしていることをすることは可能です。

関連する問題