問題タブ [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 に答える
906 参照

django - django 1.3+ のインライン フォームセットのフォームセット

製品モデルと価格モデルがあります。価格モデルには、製品モデルへの FK があります。複数の価格が存在する場合があります (販売されたユニットの数量によって異なります)。django 1.2.5 より前のhttp://yergler.net/blog/2009/09/27/nested-formsets-with-django/は問題を解決します。しかし、詳細なhttp://www.mail-archive.com/django-users@googlegroups.com/msg124195.htmlとして、これはもはや機能しません。

目的の結果を終了します: データを編集および追加するには、次のフォームを使用します。

製品 1 - 価格 1、数量 - 価格 2、数量 製品 2 - 価格 1、数量 製品 3 - 価格 1、数量 - 価格 2、数量 - 価格 3、数量

明確にするために再現:

Nathan の元のコードでは、最下位レベルのフォームセットは次のように作成されます。

ここで、instance は Building のインスタンスであり、テナントの「親」またはコンテナーであり、self はのインスタンスです。

これは次のようにインスタンス化されます:

これを回避するために、self.data を渡すのをやめました。これにより、レンダリングされてビューに POST された後でも、最下層のフォームは常に is_bound = False になります。その結果、検証は常に失敗し、フォームが表すオブジェクトは更新できません。Nathan のブログ投稿のコードを使用して動作を再現したので、フォームセットをネストするこのアプローチはもはや有効ではないか、1.3 で動作するようにコードを微調整する必要があるようです。

Django 1.2.5 までは、Nathan のコードは問題なく動作します。ただし、1.3 では、self.data が TenantFormset に渡されると、空であることが判明し、ManagementForm 情報が提供されていないため、ValidationError が発生します。
これは #11418、AFAICT の意図した結果です。

これをどのように機能させるかについて、他に考えがある人はいますか?

乾杯、

(詳細なコード例がなくて申し訳ありません。ネイサンの投稿は私のコードよりもはるかに明確なので、それを確認することをお勧めします。)

一般的な注意:これを行う方法については、多くの混乱があるようです。ここの回答で示されています http://www.reddit.com/r/django/comments/hwyto/is_there_a_way_to_do_nested_formsets_in_django/

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

django - Django インライン フォームセットのセットアップ

私は以下のようにクラスをセットアップしました:

私がやりたいことは、ユーザーに検査グループを選択させることです。そのグループから、そのグループの下にあるすべての質問が表示され、項目ヘッダーがテンプレートでのグループ化に使用されます。その後、質問に回答し、結果を投稿します。

私の問題はこれを成し遂げることです。いくつかのコードを開始しましたが、正しくないようです。

このアイデアが機能するかどうか、または必要な機能を実現するために何をする必要があるかを誰かが確認できますか? 現在、次のエラーが発生しています。

更新 1 readthedocs から このリンクをたどって、上記のエラーを解決することができました

ただし、現在、テンプレートには送信ボタンのみが表示されているため、フォームセットは空になっているようです。

今何が問題になる可能性がありますか?

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

javascript - インライン フォームセットで [別の追加] ボタンを使用しますか?

管理者スタイルの「別の追加」ボタン (外部キーの新しいレコードを追加し、現在のフォームの選択ボックスにポップする) の使用方法を理解しました。これがその質問/回答です。ユーザーが追加のフォームセットを動的に追加できるインラインフォームセットでこれが可能かどうか疑問に思っています。

たとえば、ユーザーがitemドロップダウン メニューから s を選択できる見積もりアプリがあります。新しいインライン フォームセット インスタンスを追加し、別の を選択できますitem。が見つからない場合は、他のすべてのフォームで使用したのと同じ小さな記号 (したがってすべて同じ JS コード) をクリックしてitem、新しいレコードを追加できるようにしたいと考えています。item+

何かご意見は?

0 投票する
6 に答える
5609 参照

django - 現在のオブジェクト フィールド値に応じて異なるインラインを表示する方法

MainModelとという名前のモデルが与えられた場合、後者RelatedModelには へのForeignKeyフィールドがありMainModelます。

および対応する ModelAdmin クラス:

これがデフォルトの動作です。関連するモデルごとに 1 つずつ、合計 2 つのインラインを取得します。MainModel問題は、インスタンスが作成されているときにすべてのインラインを完全に非表示にする方法(ModelAdminadd_view)、およびインスタンスのフィールドが であるRelatedModel1ときにインラインを表示し、 whenでインラインを表示する方法です。typeMainModelTrueRelatedModel2False

属性の記述子を作成しようとしましたModelAdmin.inline_instancesが、編集中のオブジェクト インスタンスにアクセスする必要があることに気付きましたが、それはパラメーターとして渡されます。

何か助けはありますか?

ありがとう!

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

python - フォームセットのメンバ フォームにアクセスする方法

カスタム フォームを使用している inline_formset があります。そのフォームには、私が呼び出したいさまざまな機能があります。しかし、フォームセットのインスタンスが与えられた場合、その (それらの?) フォームにアクセスするにはどうすればよいでしょうか?

ここにいくつかの疑似コードがあります:

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

python - django inlineformset_factoryの余分な属性は無視されますか?

インラインフォームセットをレンダリングしようとしていますが、「extra」属性が無視されているようです。次のモデルを検討してください。

フォーム:

見る:

およびテンプレート:

これは、23( "extra = 23")を表示する必要があるときに、Bar_formの1つのインスタンスのみを表示します。私が間違っていることについて何か考えはありますか?

ありがとう


アップデート:

問題の一部は、すべてのモデルクラスが同じ基本クラスから継承していることです。私がそれらをmodels.Modelから継承させるだけで、問題はなくなります(他の問題は彼らの醜い頭を後押ししますが)。私はまだそれらを単一のクラスから継承したいので、私の元の質問は残ります。


アップデートアップデート:

モデルの基本クラスを抽象化する:

トリックをするようです。これで、クラス間にForeignKeysとManyToManyFieldsを含めることができます。

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

django - ジャンゴのforeignkey、manytomanyfield、inlineformset_factoriesについて混乱しています

全て、

Django の ForeingKeys と ManyToManyFields の基礎となるモデルについて、何か基本的なことが欠けています。

車に関するアプリケーションを構築しているとします。次のクラスがあるかもしれません:

ここまでは順調ですね。現在、これらのクラス間にいくつかの関係があります。車にはメーカーがあり、タイヤが (4 つ) あります。ただし、概念的には違いがあります。メーカーは「集約」によって関連付けられます。メーカーは複数の車に関連付けることができます。Car インスタンスを削除しても、その車のメーカーも削除されるべきではありません。ホイールは「構成」によって関連付けられています。車に関連付けられている 4 つの車輪はすべて、その車のみに関連付けられています。車を削除すると、車輪も削除する必要があります。

したがって、直感的には、次のことを行う必要があることを意味します。

最終的には、inlineformset_factories を使用して、ユーザーが車、そのメーカー、ホイールに関する詳細をすべて同時に入力できるようにしたいと考えています。このようなもの:

しかし、私が見つけたドキュメントのほとんどは、ForiegnKey が Wheel から Car に移動する必要があることを示唆しています。Wheel_formset は、Wheel (「radius」) ではなく、Car (「carName」) のすべてのフィールドをユーザーに提示するため、これは逆に思えます。

この質問を入力するだけで、私は混乱します。すべての車のフィールド、すべてのメーカーのフィールド、すべてのホイールのフィールドを持つフォームを作成する方法について、誰かが光を当てることができますか?

ありがとう

0 投票する
0 に答える
2014 参照

python - Django管理者のインラインポップアップ

ここにいる他の多くのユーザーと同じように、私はdjango管理者でネストされたインラインフォームを機能させようとするのを妨げられてきました。

私は大まかにデータ構造を持っています

グループ-いくつかのデータフィールド

パトロール-グループへの外部キー-いくつかの異なるデータフィールド

スカウト-パトロールの外部キー-さらに多くのデータフィールド

理想的には、Groupレコードを編集するときに、管理インターフェースPatrolにスカウトにリンクされたインスタンスを表示させてから、これらのパトロールのそれぞれに関連StackedInlineするScoutレコードを内部に表示させますが、TabularInlineこれは現在不可能です。2年前からパッチを移植しようとしてかなりの時間がかかりましたが、ほとんど成功していません。

私が見る限り、私には3つの選択肢があります

  1. 何年も前からこのパッチを機能させようと頑張ってください
  2. スカウト関係のない内のパトロールオブジェクトを一覧TabularInline表示し、新しいウィンドウでパトロールを編集するためのフォームをポップアップするパトロールメンバーの編集リンクを提供します。
  3. シンプルに保ち、システムのユーザーが編集グループとパトロールの間を行き来できるようにします

オプション2は現在最も有望に見えるものですが、パトロールを編集するために追加のウィンドウをポップアップする方法についてアドバイスが必要です。

これを行う方法、ネストされたインラインフィールドを機能させる方法、または一般的な別の方法に関するアドバイスをいただければ幸いです。

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

django - Django:インラインフォームセットで各モデルオブジェクトのフォームエラーを表示する方法

著者モデルと本モデルがあります。ユーザーは、特定の著者のすべての本のプロパティを変更できます。すべてのエラーを上部に表示するのではなく、個々の本のエラーを表示できるようにしたいのですが、どうすればよいですか?

モデル

見る

レンプレート

更新されたテンプレート:エラーを表示しません

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

django - ユニットテストdjangoインラインフォームセット

インラインフォームセットを介してプログラムで新しいForeignKeyオブジェクトを投稿しようとすると、次のエラーが発生しますValueError: invalid literal for int() with base 10: ''

これが私のテストのコードです(ここでは簡潔にするために肥大化しています):

ビューコード(ここでも、簡潔にするためにトリミングされています):

テスト実行からのトレースバックは次のとおりです。

モデル、フォーム、ビューの詳細など、誰もが役立つと思うものは何でも投稿できます。

問題は'merit-0-id':u''投稿アイテムにあります。私はユニコードの有無にかかわらず、0または-1を使用してFalse、を使用して試しまし'new'た(完全なワイルドショット、私は知っています)。

私の主な混乱は、サーバーを実行しているときにフォームが機能することです。フォームを送信するときにPOST変数を調べましたが、そのidフィールドは空である可能性があり、アイテムは問題なく追加されます。

テストランナーを介して送信されたときにフォームがボークするのはなぜですか?