問題タブ [modelform]
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 ModelForms - 「インスタンス」が期待どおりに機能しない
新しいモデルを作成するか、既存のモデルを編集するモデルフォームがあります。これは簡単で動作するはずですが、何らかの理由で毎回新しいインスタンスを取得しています。
シナリオは、これが e コマース注文の最初のステップです。ユーザーは、注文を説明する情報を入力する必要があります (モデルに保存されます)。モデルを作成して保存し、ユーザーが CC 情報を入力できるように次のビューにリダイレクトします。次のビューで DB ルックアップを行う必要がないように、モデルをセッションに貼り付けます。テンプレートには、ユーザーが最初のビューに戻って注文を編集できるようにする 2 番目の (cc 情報) ビューのリンクがあります。
ビューに戻って、以前に作成されたモデルに設定されたインスタンスでフォームが作成される順序を編集するときに、デバッガーをステップスルーすると、期待どおりです。ただし、後続の POST でフォームが処理されると、form.save() が呼び出されたときにモデルの新しいインスタンスが作成されます。
これは、フォームのフィールドを制限したためだと思います。レンダリングされた HTML には、既存のモデルへの ID (またはその他の参照) を格納する場所がありません。ただし、「pk」フィールドと「id」フィールドの両方を (同時にではなく) 追加しようとしましたが、フォームがまったくレンダリングされません。
これを必要以上に複雑にしているのではないかと思いますが、現時点では行き詰まっており、フィードバックを使用できます。前もって感謝します。
python - Django アプリケーションのローカライズは、models.py ではなく、forms.py にのみ適用されます
アプリケーションをローカライズしようとすると問題が発生します。英語とドイツ語の 2 つの言語で利用できます。この問題は、ブラウザの言語が英語 (米国) に設定されていて、設定ファイルで「de」に設定されている場合に発生し、その逆も同様です。英語で表示されるフィールドもあれば、ドイツ語で表示されるフィールドもあります。私のモデルには、CharField、DecimalField、および DateField フィールド タイプが含まれています。
models.py:
フォーム.py:
設定.py
ブラウザに設定されている言語は英語です。フィールド test_number と test_price のラベルはドイツ語で表示され、test_date のラベルは英語で表示されます。models.py から _('Test number') を削除し、forms.py の label 属性として追加すると機能します。これを行う別の方法ではありませんか?
django - なぜDjangoは例外をスローする代わりにform.ValidationErrorとしてunique_together制約を強制しないのですか?
編集:この投稿はDjangoのModelForm unique_together検証の複製ですが、ModelFormから「exclude」を削除するというここでの受け入れられた答えは、他の質問で受け入れられた答えよりもはるかにクリーンなソリューションです。
これは、この質問のフォローアップです。
clean_title()関数でunique_together制約を明示的にチェックしないと、djangoは例外をスローします。
/ journal / journal/4のIntegrityError
重複するキー値が一意性制約「journal_journal_owner_id_key」に違反しています
リクエスト方法:POST
リクエストURL: http:// localhost:8000 / journal / journal / 4
例外タイプ:IntegrityError
例外値:重複するキー値が一意性制約「journal_journal_owner_id_key」に違反しています
例外の場所:実行中の/Library/Python/2.6/site-packages/django/db/backends/util.py、19行目
ただし、Djangoは、キャッチする必要のある例外を除いて、ValidationErrorを発生させることで、この制約を適切に適用するという印象を受けました。
以下は、回避策として使用する追加のclean_title()メソッドを使用したコードです。しかし、djangoが期待どおりに制約を適用しないように、私が間違っていることを知りたいです。
ありがとう。
モデルコード:
フォームコード:
コードを表示:
作業コードの更新: DanielRosemanに感謝します。
モデルコードは上記と同じです。
フォームコード-excludeステートメントとclean_title関数を削除します。
コードの表示-カスタムの一意性エラーメッセージを追加します。
python - modelform クラスの save() メソッドをオーバーライドし、不足している情報を追加する方法は?
Django を学び始めたばかりで、質問がありました。
フォームデータを保存するときに、不足している情報を自動的に追加しようとしています。modelform クラスの save() メソッドをオーバーライドして、目的の「cleaned_data」情報を変更/追加できますが、変更がデータベースに記録されません。実際、変更された情報をどのように書くのですか?これはコードです:
そしてモデル:
ティア
python - ModelForm の検証に関する問題
ModelForm を使用してフォームを作成しています。一意のフィールドの検証という1つのことを除いて、すべて正常に機能します。コード:
しかし、一意でないタイトルでフォームを保存すると、カスタム翻訳エラーは表示されませんが、デフォルト エラーが表示されます。固有のフィールド エラーが表示されるのを修正するにはどうすればよいですか?
編集: それを行うための非常に便利な方法を見つけたと思います。多分誰かがそれを使うでしょう:)
python - django ModelForm save() メソッドの問題
私はモデルフォームを持っています:
これを使用して特定のインスタンスを編集できるようにしたい:
行にあることに注意してください
form = SnippetForm(data=request.POST, instance=snippet)
、ユーザーから提供されたデータを使用するフォームを作成し、(url から受け取った) 主キーを使用して見つかったインスタンスにバインドしました。django documentationによると、save() を呼び出すと、既存のインスタンスが POSTED データで更新されます。代わりに、新しいオブジェクトが作成され、データベースに保存されていることがわかります。何が悪かったのか?どうもありがとう。
【追記】本当にお恥ずかしい限りです。コードには実際に問題はありません。すべてを台無しにした唯一のことは、テンプレートに追加したアクションでした (スニペットの追加と編集に同じテンプレートを使用しているため)。
python - __init__ で ModelForm にフィールドを追加できません
に問題がありModelForm
ます。フィールドtest1
は表示されますが、test2
- は表示されません。で遊んでbase_fields
も役に立ちませんでした。
ありがとうございました。
django - クエリセットとしてのフィールドchoices()?
1つの選択と1つのテキスト入力を持つフォームを作成する必要があります。選択はデータベースから取得する必要があります。モデルは次のようになります。
これへの行は管理者によってのみ追加されますが、すべてのユーザーがフォームで表示できます。それからModelFormを作りたいです。私はこのようなものを作りました:
しかし、それは機能しません。選択タグはhtmlに表示されません。私は何を間違えましたか?
アップデート:
このソリューションは、私が望むように機能します。
django - ModelForm()の子のsave()のself.instanceについて混乱しています
save()のドキュメントでは、次のように説明されています。
ModelFormのサブクラスは、既存のモデルインスタンスをキーワード引数インスタンスとして受け入れることができます。これが指定されている場合、save()はそのインスタンスを更新します。指定されていない場合、save()は指定されたモデルの新しいインスタンスを作成します
ただし、self.instance
inにはsave()
常にオブジェクトがあります。
instance
では、が存在するのか、新しく作成されたのかをどのように判断できますか?