問題タブ [django-forms]
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 - def clean メソッド内の Decimal Calcs のエラー?
検証に続いて、def clean メソッドでいくつかの簡単な計算を試みています (基本的には、取得した英国の製品価格のユーロ換算をその場で吐き出します)。TypeError が発生し続けます。
完全なエラーの読み取り:
{'product': , 'invoice': , 'order_discount': Decimal("0.00"), 'order_price': {...}, 'order_adjust': None, 'order_value': None, 'DELETE': を変換できませんFalse、'id': 92、'quantity': 8} から 10 進数
したがって、djangoはcleaned_dataフォーム全体をDecimalメソッドに渡していると思います。どこが間違っているのかわからない-私が取り組んでいるコードは次のとおりです。
請求書がタイプ 2 (ユーロ請求書) の場合、システムは最新の為替レートを取得し、それを一致する英国ポンド価格に適用して、ユーロの結果を取得する必要があります。
def clean メソッド内で 10 進変換を実行することは問題になるはずですか?
ありがとう
python - インラインフォームセットとモデルフォームを使用した管理者でのフォーム検証
ユーザーが注文したコンテンツオブジェクトのリストを目的としたモデルOrderedListがあります。OrderedListには、それが属するサイトなど、いくつかの属性があります。
コンテンツオブジェクトは、OrderedListRowクラスを介してアタッチされます。このクラスは、管理者のインラインフォームセットを介してOrderedListの管理者に取り込まれます。
(OrderedListは、より大きなGenericList抽象からサイトフィールドを継承します)。
これが私の問題です。ユーザーが管理フォームを保存するときに、各OrderedListRowによってマップされた各コンテンツオブジェクトがOrderedListと同じサイトに属していることを確認します(リストは1つのサイトにのみ属することができ、コンテンツオブジェクトは複数に属することができます)。
OrderedListの管理フォームのclean()をオーバーライドできますが、OrderedListRowsを含むインラインフォームセットが含まれていないため、そのデータに到達できません。OrderedListRowsのインラインフォームセットのクリーンをオーバーライドできますが、リストに到達できません。OrderedListのフォームデータとフォームセットのフォームデータの両方に到達するために、フォーム検証のコンテキスト内で何らかの方法が必要です。これにより、OrderedListRowのコンテンツオブジェクトのすべてのサイトをOrderedListのサイトと照合し、問題がある場合は検証エラーをスローできます。 。これまでのところ、OrderedRowとOrderedListRowsの両方のクリーンアップされたデータが含まれている関数は見つかりませんでした。
django - 現在form.pyにログインしているユーザー名を記録するには?
現在form.pyにログインしているユーザー名を記録するには?
django - 子オブジェクトの合計計算を実行する最も簡単な方法は何ですか?
注文数量や注文値などを保持する多数のOrder子が関連付けられている、Invoiceモデルオブジェクトに対して一連の簡単な計算を実行する必要があります。これはすべて、Invoiceの管理フォームで管理されます(注文はインラインで) )。
私が使用しているコードは、次のようにこれらの計算を実行します。
請求書(models.py)
これにより、子の注文数量を変更してフォームを保存するときにいくつかの問題が発生します。新しい合計ではなく以前の合計を取得します。もう一度保存すると、合計が自動的に修正されます。おそらく、Djangoが親オブジェクトと子オブジェクトを保存する方法が原因ですか?
私が試した他のオプションは、この計算を子注文オブジェクトに移動することでした(恐ろしいコードの準備):
注文(models.py)
それもあまり効果的ではありませんが。
誰かがこれらの計算が期待どおりに機能することを保証する簡単な方法に私を導くことができるかどうか疑問に思いますか?シグナル(私にとっては比較的新しい)について考えましたが、それはやり過ぎではないかと思いました。私はおそらくこれを考えすぎています!
ありがとうございました
django - シンプルな調査アプリのフォームを生成する
簡単な調査用のアプリを作成しています。
可能な答えとして、「はい/今」、「1から5のうちの1つ」、および短いテキストが必要です
管理者では、どのような回答が必要かを選択できる必要があります。
私のモデル:
すべての質問をループして、質問の answer_type と互換性のある回答フォームを作成することにより、フォームを生成する (できれば: 簡単な) 方法はありますか?
またanswer_type = models.ForeignKey(ContentType)
、回答タイプのみが表示されるように contenttypes をフィルタリングすることは可能ですか?
django - widgets/foreign.html ファイルは django トランクのどこにありますか?
ForeignKey フィールドの widgets/foreign.html テンプレートをオーバーライド (カスタム作成) したいのですが、ソースでこれを見つけることができません。Django SVN リポジトリを参照すると、これらのファイルがリビジョン 7966 で見つかりますが、このリビジョン以降は削除されています。
http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/templates/widget?rev=7967
フォーム選択フィールドを生成し、foreignkey フィールドの 'add another/new' リンク html を生成するコードはどこにありますか?
これをオーバーライドして、特定のモデル フィールドのカスタム フォーム ウィジェットを作成するにはどうすればよいでしょうか。
django - モデルフォームのraw_id_fields
40,000行のモデルに対するForeignKey値である1つのフィールドを持つモデルフォームがあります。デフォルトのモデルフォームは、40,000のオプションを含む選択ボックスを作成しようとしますが、控えめに言っても理想的ではありません。このモデルフォームをフォームセットファクトリで使用すると、さらにそうなります。
管理者では、これは「」を使用することで簡単に回避できraw_id_fields
ますが、モデルフォームに相当するものはないようです。これどうやってするの?
これが私のモデルフォームです:
最初の太字の行は、扱いにくい巨大な選択ボックスを作成しないことで機能しますが、このフォームのフィールドセットを保存しようとすると、「OpBase.base」は「Base」インスタンスである必要がありますというエラーが表示されます。モデルフォームを保存するには、「base」がBaseインスタンスである必要があります。どうやら、Base主キーの文字列表現は十分ではありません(少なくとも自動的には)。フォームに指定された文字列をBaseインスタンスに変更するには、なんらかのメカニズムが必要です。そして、このメカニズムはフォームセットで機能する必要があります。何か案は?うまくいくだけraw_id_fields
なら、これはケーキのように簡単でしょう。しかし、私が知る限り、それは管理者でのみ利用可能です。
django - JSONで純粋なDjangoフォームエラーを返す
通常のDjangoビューで検証しているDjangoフォームがあります。(HTMLフォーマットなしで)純粋なエラーを抽出する方法を理解しようとしています。以下は私が現在使用しているコードです。
これにより、Djangoから悪名高いプロキシオブジェクトエラーが発生します。各エラーをUnicodeに強制しても、トリックは実行されません。これは、各エラーの__unicode__
メソッドが効果的にHTML化されて呼び出されるためです。
何か案は?
編集:
興味のある人のために、これはの定義ですjson_response
:
django - モデルの unique_together 制約 + なし = 失敗?
2 つの質問:
- 親=なしで名前が同じ場合、重複が作成されないようにするにはどうすればよいですか?
- フォーム内からモデル メソッドを呼び出すことはできますか?
以下の詳細をご覧ください。
models.py
注: スラッグ = ユニークでもあります!
フォーム.py
詳細
制約unique_together
はフォーム when で完全に機能しparent != None
ます。ただし、parent == None
(null) の場合、複製の作成が許可されます。
これを回避するために、フォームを使用して clean_name を定義し、重複をチェックしようとしました。これは、新しいオブジェクトを作成するときには機能しますが、既存のオブジェクトを変更するときには機能しません。
ModelForm の .save で commit=False を使用する必要があると誰かが言っていましたが、これを行う/実装する方法がわかりませんでした。ModelForm の has_changed を使用してモデルの変更を検出して許可することも考えましたが、has_changed はフォームで新しく作成されたオブジェクトに対しても true を返します。ヘルプ!
また、(ややまったく別の質問ですが)フォームから make_slug() モデル メソッドにアクセスできますか? 現在、私の行はスラッグフィールドの「一意の」制約も無視していると思いますexclude = ('slug',)
。モデルの保存フィールドでは、代わりにスラッグを生成しています。代わりにforms.pyでこれを行うことができるかどうか疑問に思っていましたか?
django - inlineformset_factory データの保存
これは非常に簡単に思えますが、データを送信しようとすると (変更されていないデータであっても)、次のエラーが発生します。
誰でもこのエラーの原因を知っていますか? フォームセットにエラーがある場合、formset.is_valid()
'True' になっているのは何ですか? 何がうまくいかないのかを見つけるためにこれをデバッグする方法について、少なくとも誰かがアイデアを持っていますか? 両方のフォームを個別に使用すると完全に機能{{formset.management_form}}
し、テンプレートに含まれています。