問題タブ [inline-formset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
6472 参照

python - InlineFormsets にカスタム フィールドを追加する方法は?

次のコードを使用してカスタム フィールドを InlineFormset に追加しようとしていますが、フィールドが Django Admin に表示されません。これを許可するには、InlineFormset があまりにもロックダウンされていますか? 私の印刷「ding」テストは期待どおりに起動し、form.fields を印刷してそこにすべて表示できますが、実際のフィールドは admin でレンダリングされません。

admin.py

0 投票する
3 に答える
10669 参照

django - Django のインライン フォームセット - 特定のフィールドの削除

インラインフォームセットを作成する必要があります

a) 一部のフィールドMyModelが完全に表示されないように除外する

b) いくつかのフィールドを表示しますMyModelが、編集できないようにします。

以下のコードを使用してみvalues()ました。クエリセットをフィルタリングして、返してほしい値だけに設定しました。しかし、これは失敗しました。

何か考えがある人はいますか?

0 投票する
2 に答える
1550 参照

ajax - inlineformset_factory カスタム フォーム ID

ページに新しいフォームを追加するために ajax を使用する Web アプリケーションを作成しています。既存のフォームは inlineformset_factory を使用して作成されます。クライアント側がフォームを取得すると、それを正しい位置に挿入し、#id_form_type-TOTAL_FORMS" の値を更新します (この例では、form_type はフォームの名前です)。

既存のフォームには、name="form_type-1-source" のような各フィールドの名前があり、1 は一意のフォーム ID です。

問題は、すべてのフォームが異なるように、新しいフォームの次の ID を生成することです。私は1つの解決策を作りましたが、それは好きではありません。

ajax 呼び出しの URL は次のようになります。

フォーム ビューを取得します。

そして、それを呼び出す JavaScript 関数:

私は複数のフォームを持っているので、関数は汎用的です。アンカーの href 属性に form_type を保持しています。

つまり、ここで行っているのは、必要以上のフォームを作成していて、最後のフォームだけを使用していることです。

では、最初に生成したい ID を inlineformset_factory に伝える方法はありますか?

PS: 下手な英語でごめんなさい...

0 投票する
2 に答える
1353 参照

django - フォームセットのフィールドに動的に入力する

次のような 2 つのモデルがあります。

...次に、次のようなモデルフォーム:

ご覧のとおり、シーケンス ウィジェットは非表示になっています。これは、このフィールドが django によって自動的に処理されるようにするためです。ユーザーは、テキスト ボックスから Base を入力するだけで済みます。シーケンスは、テキスト ボックスの順序によって推測されます。

ルート内のすべてのベースを作成/編集するために、このフォームを使用してフォームセットを作成しました。

このフォームセットが作成されるとき、シーケンス フィールドは空です。フォームセットを保存する前に値を入力する必要があります (そうしないと検証されません)。私はこれについて約4つの方法を考えることができます

  1. フォームセットをテンプレートに送信する直前に、次のコードを実行します。

1 つの問題を除いて、これは正常に動作します。フォームセットが保存のためにビューに送信されると、フォームセットで作成された 5 つの追加フィールドすべてにシーケンス値が入力されます。これは、ユーザーがルートに 2 つまたは 3 つの塩基のみを追加したい場合に問題を引き起こします。そのフォームの必須フィールド「ベース」が空であるため、検証エラーがポップアップ表示されます。フォームセットが POST された後、ベースが存在するかどうかを確認するコードを少し実行できます。存在しない場合はシーケンスを削除しますが、それを行う場合は...

  1. フォームセットが POST されたときに、ベースが入力されているかどうかを確認するコードを少し実行します。入力されている場合はシーケンスを追加し、そうでない場合はそのフィールドを空白のままにします。そうすれば、フォームセットにアクセスしようとすると.save()、空の値により、その特定のフォームがデータベースに入れられないことが保証されます。.save(commit=False)唯一の問題は、フォームセットが検証されないため、実行するまでフォームに対して何もできないことです。しかし、私はできました...

  2. 変数をコピーしてシーケンスを手動で設定することにより、シーケンス値を追加しますrequest.POSTが、それは非常にハックに思えます。

  3. blank=Trueフィールドの 1 つから削除することもできRouteBaseますが、実際にはそうしたくありません。

それで、私はここで何をすべきですか?

0 投票する
3 に答える
37520 参照

django - インライン フォームセットを使用したモデルおよび関連モデルの作成

[これをDjango ユーザーに投稿しました| Google グループも。]

inline formset docsの例を使用して、特定のモデルに属するオブジェクトを編集できます (modelforms を使用)。私はインライン フォームセットを使用して新しいオブジェクトを作成するために同じパターンに従おうとしまし たが、この目的のための作業ビューを引き出すのに十分な頭をクリアすることができませんでした。

上記のリンクと同じ例を使用して、関連する「Book」オブジェクトとともに「Author」モデルの新しいインスタンスを作成するにはどうすればよいでしょうか?

0 投票する
2 に答える
4845 参照

python - インスタンスのない Django Formset

このDjango Docでは、特定の著者に属する本を編集できるフォームセットを作成する方法を説明しています。

私がやりたいことは次のとおりです。新しい著者に属する新しい本を追加できるフォームセットを作成します...同じフォームセットに本とその著者を追加します。

光を当てることができますか?ありがとう。

0 投票する
1 に答える
1927 参照

django - 同じページから投稿された複数のdjangoフォーム、インライン、およびそれらのインラインの追加/削除

スタックオーバーフローのほぼ同じ問題についていくつかの質問がありますが、それらのどれも私が予測できる問題をカバーしていないようです。私のdjangoknowledegeは限られているので、過剰反応している可能性があります...そう..

私がdjangoで達成したいのは、2つのモデル、ListとListItemを同じビューで編集することです。共通フォームとしてリストし、inlineformsetとしてlistitemをリストします。これらの2つのフォームを作成することは問題ではありません。それらをビュー>テンプレートに渡すことも問題ではありません。

私が心配しているのは、

1)それらを同じアドレスに投稿し、その投稿リクエストを処理する方法。

2)javascriptを使用してこのフォームセットからこれらのインラインListItemを追加/削除するように設定する方法。

2.1)ListItemオブジェクトを削除するためにajaxリクエストをアドレスに送信してから、javascriptを使用してフォームのその部分を削除した場合。djangoビューパーツは、データベースから削除するオブジェクトをどのように認識しますか?オブジェクトのIDをテンプレートに渡して、ajaxで表示するために送り返す必要がありますか?

2.2)行を削除/追加した後に、変更されたListItemインラインフォームセット全体が投稿された場​​合、最初に使用されたオブジェクトのディクショナリが途中で変更されたため、問題が発生しませんか?

3)誰かが見ることができる他の落とし穴はありますか?

ところで、私はコード例を通して欲しくない。可能であれば、物事がどのように機能するか、そして私が何をすべきかを説明し、心に留めておいてください。あなたが最新の例を知っているなら、私もいくつかのリンクを使うことができます。

編集(そして私自身の質問に答える):私はそれを試しました、そしてここに私が見つけたものがあります:1)ちょうどそれらを置く...あなたはこのようにそれをすることができます:

そして、必要なことは何でもします-非常にシンプルで簡単です。

2)既存の行/フォームを複製するか、1つ削除します。覚えておく必要があるのは、要素名が正しく、formsetが{{form.management_form}}でロードするものには、フォームの数に関する最新の正しい情報が含まれていることだけです。すべてのフィールド名も最新である必要があります。フォーム1とフォーム3の間からフォームを削除する場合は、フォーム3の番号を2に変更する必要があります。

2.1)要素IDは{{form.initial.id}}から抽出して、フォームで使用できます

2.2)form.management_form情報が正しく、フィールド名が最新の場合はいいえ(2を参照)

3)ビューを作成するだけで、クロスサイトリクエストフォージェリによってサイトが台無しになることはありません(http://docs.djangoproject.com/en/dev/ref/contrib/csrf/を参照) 。

アラン。

0 投票する
2 に答える
11610 参照

django - Django:フォームセットからフォームIDを取得しています

タイトルが私が欲しいものを正確に表しているかどうかはわかりません。私が望むのは、そのようなことを達成することです: Django add / remove form without multiple submit

しかし、私はフォームセットとフォームを持っているアイテムのリストを持っていません。このフォームセットのフォームには、{% url 'item_edit' item.id %} のようなリンクを作成するために使用できる情報が含まれています。問題は、それが非表示フィールドの値であることです。ここ ( http://docs.djangoproject.com/en/dev/topics/forms/#looping-over-the-form-s-fields ) には、テンプレートでフォームのフィールドを使用する方法のオプションのリストがあります。しかし、どれも {{ field.value }} ではありません。私がそれを試みた場合、それは黙って失敗しました。

ともかく。コードに。私がテンプレートに持っているものは次のとおりです。

これにより、次のようなインラインフォーム行が得られます。

そして、私はこのようなリンクを追加する方法を探しています

あるいは単に

このビューの Urlconf は次のとおりです。

フォームからアイテム(オブジェクト)のIDを取得する簡単な方法はありますか? 代わりに、リンクを削除するための何らかのウィジェットを作成する必要がありますか?

アラン。

0 投票する
1 に答える
147 参照

django - インラインフォームセットを使用して2つ以上のフォームをリンクするにはどうすればよいですか?

私は次のモデルを持っており、それらを使用して連絡先フォームを生成したいと思います...インラインフォームセットを使用することになっていることはわかっていますが、これを作成する方法の頭または尾を作成することはできませんでした仕事...名前、名前、メールアドレス、電話番号、連絡に最適な時間、メッセージを表示したい。

0 投票する
3 に答える
7933 参照

django - Django inlineformsetfactory - 何の役に立つのですか?

初心者の質問で申し訳ありませんが...

誰かが inlineformset_factory の使用例を明らかにすることはできますか?

私はDjangoのドキュメントの例に従いました:

ただし、ブック フィールドのみが表示されます。

私の理解では、formset は、Django Admin と同じように、インラインの Author フォームを含む Book フォームを表示するということでした。その上、フォームセットに初期値を簡単に渡すことができませんか?

では、2 つの別々の AuthorForm と BookForm を使用するよりも、どのように優れているのでしょうか?

または、明らかな何かが欠けていますか?