問題タブ [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.
django - Djangoインラインフォームセットのカスタム検証では、一度に1つのフォームセットのみを検証します
私はDjangoを使用しており、2つの追加のインラインフォームセットを含むフォームがあります。各フォームセットに少なくとも1つの入力済みフォームが含まれていることを検証したいと思います。これが機能するようにコードを記述しましたが、一度に各フォームセットに対してのみ機能します。フォームセットフォームを入力せずにフォームを送信すると、最初のフォームのみが検証エラーを示します。次に、最初のフォームセットフォームにデータを入力し、2番目のフォームを空白のままにすると、2番目のフォームはエラーになります。
両方が有効でない場合、両方のフォームにエラーを表示したい。
フォームは単なる標準ModelForm
インスタンスです。これが私の見解です:
そして、これが私のテンプレートのフォームです。便利な場合に備えて、次のようにします。
python - Django:ManagementFormデータがありません...フォームセットは検証されません。なんで?
何らかの理由で、フォームセットを送信した後、フォームセットが検証されません。これが起こっているかもしれない方法についてのアイデアはありますか?
#models.py
#view.py
step5-test.html
フォローアップ(解決策):
提供されたブラントは、エラーが発生した理由についての洞察を提供しました。私の場合、彼の洞察は、私の状況に適したハックを構築するのに役立ちました。このハックは、テンプレート内で特定の方法で変更された可能性のあるフォームセットに適用できるようです。私の場合、フォームセットが複雑になり、よりユーザーフレンドリーにするためにいくつかのajaxが必要になりました。
「retrieve_provider_instance(email)」は、データベースに設定されたさまざまな基準(約200行のコード嘔吐)に基づいてプロバイダーオブジェクトを取得する動的な方法でした。
いくつかの大規模なデバッグの後、次のハックがうまくいきました。テンプレートの「for」ループに 次の非表示フィールドを追加することで解決しました
私が尋ねていた特定の質問にはるかに当てはまるので、私はマークの答えを受け入れました。うまくいけば、これはこの例を実装しようとする将来の他のユーザーに役立つでしょう。実際、送信時に「プレフィックス」を割り当てるのが正しい方法であり、最も理にかなっています。
たくさんのご回答ありがとうございました。
よろしく、マット
フォローアップ:問題の一部を見つけた可能性があると思います。しかし、それはまだ解決されていません。
問題の解決に役立つ可能性のある追加情報を次に示します。間違ったPOSTデータがこれを台無しにしている可能性がありますか?もしそうなら、どうすればこれを回避できますか?
これは、フォームセットを送信した後に発生することです(この場合はフォームが1つだけです)。
トレースバックは次のとおりです。
_management_form68のファイル"/home/mhjohnson/webapps/resourcedb/lib/python2.6/django/forms/formsets.py"。raiseValidationError('ManagementFormデータが見つからないか、改ざんされています')
これは私のPOSTデータです:
何か案は?
css - drupal6 エラー ajax インライン
カスタムインラインエラーメッセージをノードで形成するように設定するにはどうすればよいですか (cck とすべてのものを含めます) ?
いくつかのモジュールを見ましたが、CCK サポート、アップロード サポート、エラー メッセージなどがないため、100% の解決策を提供するモジュールはありません。
django - Django 管理者: 2 つの外部キーを持つ Many2Many モデルのインライン
何日も頭を悩ませた後、誰かが私に正しいアプローチを教えてくれることを願っています. ページ、要素、スタイル、投稿の4つのモデルがあります。
これが私の単純化されたmodels.py/admin.pyの抜粋です:http://pastebin.com/uSHrG0p2
2文で:
要素は 1 つのスタイルと 1 つの投稿 (2 つの FK) を参照します。
ページは多くの要素を参照でき、要素は多くのページで参照できます (M2M)。
Page インスタンスの管理サイトでは、M2M 関係を「インライン」として含めました。要素インスタンスを選択するための複数の行があるようにします。1 行は次のようになります: [My Post A with My Style X][V]
私が望むのは、その 1 つのドロップダウンを 2 つのドロップダウンに置き換えることです。1 つは Post のすべてのインスタンスを持ち、もう 1 つは Style のすべてのインスタンスを持ちます (Element インスタンスをインプレースで作成します)。そのため、1 つの行が Element 管理サイトのようになります: [My Post A][V] [My Style X][V]
簡単に聞こえますが、ModelForms、ModelAdmins、Formsets などを 2 日間読んで実験した後、完全に迷ってしまいました。Django 管理機能内のカスタム ビュー/フォームなしでそれを行うことはできますか?
私のアプローチの 1 つは、このように PageAdminForm から Post/Style インスタンスにアクセスし、そこから手動でフォーム ウィジェットを作成しようとすることでした...しかし、そうすることができませんでした:
私が行く必要があるアドバイスやヒントはありますか?お時間をいただきありがとうございます!
python - 外部キーの inline_formset フィールド表示をカスタマイズする
他の 2 つのモデルにリンクする Access というモデルがあります。
このフォームを作成しました。
私はこれをビューに持っています。
問題は Web ページにあります。user_id が選択フィールドとして表示され、すべてのユーザーのリストが表示されます (つまり、「jane15」、「tom54」)。誰かがユーザー名を入力しなければならないテキスト フィールドにしたい。以下のようにカスタマイズしようとすると、「ユーザー名」(つまり「1」、「2」) の代わりに「ユーザー ID」が表示されます。
ユーザー名 (つまり "jane15") を選択フィールドではなくテキストフィールドとして表示して受け入れるフォームセットを取得するにはどうすればよいですか?
django - ユーザーが同時に編集している場合、DjangoインラインフォームセットはIndexErrorをスローします
更新: これはチケット 14642として報告された Django の既存のバグだと思います
これは私を夢中にさせており、フォームコードが原因だと思っていましたが、モデルと管理者を使用して再作成できることに気付きました。ここで予想される動作が何であるかを知りたい:
models.py:
admin.py:
次の手順を実行します。
- admin でいくつかの ThingyItems を使用して新しい Thingy を作成し、保存します。
- 編集ページを開きます。
- 2 番目のブラウザー ウィンドウで同じものの編集ページを開きます。
- 最後の ThingyItem の [削除] ボタンをオンにして、2 番目のウィンドウに保存します。
- 最初のフォームに戻って保存します
これを行うと、次のようになります。
独自のフォームを使用したコードで本番サーバーで発生していることを除いて、管理者ではこれについてあまり気にしません。インライン フォームセット コードは非常に脆いようです。それらの仮定がまだ有効であることを実際に確認する必要がある場合、管理フォームで送信されたデータを信頼します。
今、これは Django Trac で報告する価値があると思います - そして私は今それをするつもりです - しかし、ここで誰かがこれを経験したことがあるかどうか疑問に思っていました。フォームによって想定されるこれらの前提条件がまだ有効かどうかをテストする簡単な方法はありますか? ビューまたはフォーム コードでそれを行う必要がありますか?
django - 空のcleaned_data
なぜこれが起こっているのか理解できません。まったく同じコードを他のインライン フォームセットに適用しましたが、この特定のインライン フォームセットは私の変更を保存していません。データがあるにもかかわらず、フォーム「AtLeastOneFull」内で form.cleaned_data が常に空であることがわかりました。
Web ページにはモデル 'Access' のコンテンツが正しく表示されますが、[送信] をクリックすると、Web ページのインライン フォームのデータを変更してもデータがないため、無効として登録されます。
フォーム:
モデル:
見る:
django - djangoadminインラインフォームセットを制限する方法
django adminでインラインフォームセットをどのように制限しますか?
問題:
Bと1対nの関係にあるテーブルAがあります。テーブルAには、少なくとも1つのテーブルBアイテムと、最大5つのテーブルBアイテムが必要です。
django - 外部キーをドロップダウン メニューではなく独自のフォームとして表示するにはどうすればよいですか?
次のような映画のリストのフォームセットを作成しようとしています:
現在、「映画」がドロップダウン メニューとして表示されています。ただし、「Movie.name」の場合は空白のテキスト ボックスとして、「Movie.genre」の場合はドロップダウン メニューとして「Movie」が表示されるようにしたいと思います。ユーザーはテキスト ボックスに映画名を入力してジャンルを選択できます。その映画が既に存在する場合、MovieList.movie は既存のテーブル行を参照します。それ以外の場合は、新しい MovieList 行が作成され、MovieList.movie が新しいテーブル行を参照します。
これどうやってするの?