問題タブ [django-formwizard]
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フォームの初期値
こんにちは人々ここに私のコードです
これはUrls.pyにあります
これが私の見解です
これは問題なく正常に機能しますが、URLが呼び出されたときにフォームフィールドに初期値を設定したいのですが、これを修正する方法はありますか?
django - カスタムクエリセットを使用したフォームウィザード
フォームウィザードに問題があります。ウィザードの手順 3 では、手順 1 と 2 の選択に応じてフィルター処理されたクエリを使用します。先に進むときはウィザードが正常に機能しますが、ユーザーが [前へ] を押すか、手順 1 と 2 の選択を変更すると、問題が発生します (検証エラーまたはフィルターは機能しません)。
ここに私のforms.pyがあります:
forms.py で queryset Activiteit.objects.none() を使用すると、ウィザードのステップ 3 の正しいフィールドが正しく表示されますが、ステップ 3 では常に検証エラーが発生します。
forms.py で queryset Activiteit.object.all() を使用すると、ステップ 3 で正しい (フィルター処理された) フィールドが表示され、フォームが検証されます。ただし、ユーザーが手順 4 で [前へ] を押すと、フィルターがなくなり、すべての選択肢が利用可能になります。
Edit2:わかりました get_form が毎回読み取られることがわかりました(これに関する以前の編集を削除しました)。私のコードの問題は、ユーザーが step4 から step3 に戻ったときに、get_form が使用しているステップが step4 であることです。私は変更しようとしました:
「ステップ == 'step3' の場合」
の中へ:
「ステップ == 'step3' またはステップ == 'step4' の場合:」
私の見解では、これはActiviteitで重要なエラーになります
ステップ3に移動してフィールドが更新されたと思いますが、フォームは更新されていません。以下にviews.pyを含めました。
django - フォーム ウィザードの実行時に選択肢とフォームを設定しますか?
フォーム ウィザードを使用しようとしていますが、フィールドの選択肢を設定する場所がわかりません。
オブジェクトを追加するための管理パネルのような空のフォームが表示されます。質問をフォームに渡し、質問フィールドに入力し、編集できず、送信しないようにしたいと考えています。
私が行った場合
関数 get_form_list には長さがありません
Quiz_id が不明です。
そのため、quiz_id をビュー関数に渡して、フォーム ウィザードで使用する質問フォームのリストを生成しようとしています。
urls.py
ビュー.py
エラーメッセージが表示されます
ローハンの答えに基づいて更新:
このコードでは、エラーが発生しています
これが私のmodels.pyです
django - djangoフォームウィザードでステップをオプションにする方法
Django フォーム ウィザードには、condition_dict
条件が満たされたときに特定のステップをスキップできる があります。ステップをスキップしたくないが、オプションにしたい場合はどうでしょうか。つまり、そのステップのフォームは引き続きレンダリングされますが、送信ボタンとこのステップをスキップするボタンの両方があります。送信ボタンは通常のフォーム検証を実行し、スキップ ボタンはユーザーを次のステップに移動させます。
これはdjango 1.4/1.5のフォームウィザードでも可能ですか? もしそうなら、私にいくつかの指針を教えてください。ありがとう。
django - get_context_data()メソッドでフォームウィザードのURLパラメータにアクセスするDjango
次のコードがあります
---- URL.py ----
---- ビュー.py ----
kwargs['city_slug']
問題は、get_context_data()
メソッドでアクセスしようとしてキーエラーが発生することです。
メソッドで問題なくアクセスできますkwargs['city_slug']
が。done()
何か案は?
python - 初期データをdjangoフォームウィザードに提供するには?
フォーム ウィザードのドキュメントによると、初期データは静的辞書である必要があります。しかし、初期データを動的に提供することは可能ですか?
これが私の状況です:
ステップ 0 で初期データとして必要なのがメールですが、このメールは get_context_data メソッドでしか取得できません。どうやってやるの?
ちなみに、formwizard.as_view の urlconf が次のような引数を受け入れる場合:
フォームのアクション属性に変数を渡す必要があるということですか。そうしないと、フォームを送信すると、見つからない URL エラーが発生します。
django - Django ドラマ: (マルチパート フォームのドラッグ アンド ドロップ ファイル アップローダー) + (ファイルをフォームにバインド/モデル化して Postgres に保存)
ここに埋もれているいくつかの小さな関連する質問がありますが、それらは実際には 1 つの大きな毛むくじゃらのベスト プラクティスの質問を示しています。これは、一度にいくつかのトリッキーなことを行うことになっているため、実装するのが難しい機能です...
- ドラッグ アンド ドロップの複数ファイル アップローダ (Javascript 経由)
- 複数ページのフォーム (1 ページ目: ファイルをアップロードして既存のドキュメント モデルに関連付ける。2 ページ目: ファイル/ドキュメント オブジェクトとメタデータを更新してデータベースに保存する)
...そして、既存のコード サンプルや実装はどこにも見つかりませんでした。(アプローチによっては、テーブルから一掃するか、関連/埋め込み/フォローオンのすべての質問に自動的に回答することができます。) 要するに、この投稿の目的は、次の質問に回答することです。介在する質問/問題?
ファイルをアップロードするために、DjangoでドラッグアンドドロップのJQuery File Uploaderのこの実装を使用しています...
https://github.com/miki725/Django-jQuery-File-Uploader-Integration-demo
上記でリンクしたソリューションでは、もちろんファイル システムにファイルを保存しますが、ファイルのバッチごとにディレクトリを作成し、それらの各ディレクトリに UUID を割り当てることで、アップロード セッションごとにバッチで保存します。ファイルシステム上の一意の名前が付けられた各ディレクトリには、その特定のアップロード セッション中にアップロードされたファイルが含まれます。つまり、どのような種類のデータベース ストレージ メソッドでも、最初に、このソリューションによって各アップロード セッション用に作成されたファイル システム ディレクトリ内のすべてのファイルをばらばらにして繰り返し処理する必要があります。
注: 上記にリンクされている JQuery ソリューションは、アプリ ディレクトリ内のフォーム (forms.py 内) を使用しません。フォームはテンプレートにハードコードされていますが、これはすでに少し残念です...なぜなら、各バッチ内の上記の各ファイルをフォームにバインドする良い方法も見つけなければならないからです。
最も単純な方法は、おそらく最もパフォーマンスの低いソリューションではあると思いますが、2 つのフォームに対して 2 つのビューを作成し、最初のページのビューで各ファイルをデータベースに保存してから、2 番目のページでデータベースを更新することです。これが私が現在転がっている方向です:
テンプレートで...
ビューで.PY...
# POST (アップロード ハンドラ内。アップロード アクションによってトリガーされるリクエスト)
# GET (同じアップロード ハンドラ内)
最初のページのこのビューは、JQuery アップローダーを活用しています。これは、セッションごとの複数ファイルのアップロードに最適で、本来の機能を果たします。ただし、上で示唆したように、アップロード ハンドラとしてのビューは、2 ページ フォームにする必要があるものの最初のページにすぎません。2 ページ目では、エンド ユーザーはアップロードされた各ファイルを取得し、1 ページ目でアップロードしたばかりのファイルに追加データを添付して、データベースに再度保存する必要があります。
フォーム ウィザードやジェネリック クラス ベースのビューなど、さまざまなソリューションを使用して、これを 2 部構成のフォームとして機能させようとしました。以下の例では、主にセッションを介してデータの永続性を有効にしています。これらのソリューションは、かなり厄介なものになります。
要約すると、私はする必要があります...
- 一意に識別されたバッチで複数のファイルをアップロードします (ドラッグ アンド ドロップを使用)。
- アップロードされたファイルの各バッチを分解して繰り返します
- バッチ内の各ファイルをフォームにバインドし、既存のドキュメント モデルに関連付けます
- これらすべてのファイルを一度にデータベースに送信/保存します
- 新しい可能性があるフォームの次のページ/テンプレートで、これらの各ファイルを取得します
- 各ファイルのメタデータを更新する
- これらのファイルをすべて一度にデータベースに再送信/保存します
したがって...上記のすべてが単純なファイルのアップロードの複雑さをどのように複雑にし、次のような関連する質問を含めることで、機能を提供する複雑さを増すかを見ることができます。
forms.py : 各ファイルをフォームにバインドする最善の方法
models.py : 各ファイルを既存のドキュメント モデルに関連付ける方法
views.pyの最初のページで、Postgres の既存のドキュメント モデルに従って各ファイルを保存する方法。2 ページ目の各ドキュメントを更新して保存する
...そして、繰り返しになりますが、フォーム ウィザードやクラス ベースのビューを使用せずに、これらすべてを実行したいと考えています。(特に、このユース ケースの CBV は、私には少しわかりません。) 言い換えれば、可能な限り最も防弾で読みやすく/理解しやすいソリューションにつながるアドバイスを探しています。データベースに複数のヒットが発生する場合は、それで問題ありません。(ファイルをデータベースに保存することがベスト プラクティスに反すると思われる場合は、別の投稿を参照してください:データベースにファイル コンテンツを保存する
2 つのフォーム用に個別のビューを作成し、標準のアップロード フォームをサブクラス化することはできますか?
forms.py で...
...そして、上記の以前のアップロードハンドラーを次のようにリファクタリングします...
views.py で、現在のアップロード ハンドラを次のように置き換えます...
...?
django - ManyToManyField を使用した get_or_create
私はモデルを持っています
フォームでは、まさにこれらのユーザーとの会話が存在するかどうかを確認する必要があります。私はもう試した
しかし、エラーが発生します'users' is an invalid keyword argument for this function
。問題を解決するために他に何ができますか?
django - 前のステップに基づく検証
あるステップで入力があり、次のステップで別の入力があるとします (SessionWizardView を使用しています)。次のステップの入力が前のステップからの入力と同一であることを検証する必要があります。送信前にdjangoフォームバリデーターを実行するajax検証を使用しているため、入力が前のステップからの入力と同一でない場合、外出先でバリデーターを更新して正しいエラーを表示することは素晴らしいことです。
2段目の入力バリデーターで ThreadLocal.get_current_request() でセッションを取得してなんとか比較しようと考えました。しかし、私はそれが良い解決策だとは思いません:)何か提案はありますか?