2011-07-02 9 views
1

私のDjangoアプリケーションのいくつかのビューでは、同じフォームの2つのインスタンスがレンダリングされ、ビューに含まれています。 2つの形式の唯一の違いは、スタイリングと位置です。同じフィールドを持ち、同じビューに提出します。フィールドの名前だけをレンダリングするときにDjangoフォームの接頭辞を削除する方法他には触れないでください

次に、要素のIDが同じであることに気づき、同じフィールドを他のフォームにフォーカスするように、対応するフィールドをフォーカスするラベルクリックのようないくつかの機能が正しく動作しません。その後、最初のフォームにプレフィックスを追加しました。もちろん、ラベルは再び機能しました。

ただし、プレフィックスはフィールド名(ID以外)にも適用されるため、フォームインスタンスがプレフィックスなしで初期化されているため、送信されたデータを取得するビューは機能しませんでした。また、クエリ文字列も奇妙に見えます。(

プレフィックスが付いていない元のフィールド名を保持し、プレフィックス付きのHTML IDを使用するソリューションを探しているので、ビューは変更されません。分離されたIDSが、同じフィールド名を持つ2つのフォームをレンダリングする。

答えて

1

using prefix単一<形>要素でいくつかのDjangoのフォームを持っていると便利です。

複数の<フォーム>要素を持っているしたい場合は、 Formsetsを使用することができます。

+0

同じフォームを2回レンダリングします。この例はGoogleです。これは、同じフォームを結果ページの最上部の広告下部に複製します。 –

+1

同じフォームを2回使用し、右のフォーム要素に一致するラベルを使用するには、各要素ごとに異なるIDが必要です。したがって、余分な= 2を持つFormsetを使用すると、各要素のIDが異なるフォームを2回取得できます。 – antoyo

関連する問題