私は、Djangoのフォームで簡単な非モデルフィールドを追加する必要があります。pre_save信号に非モデルフィールドへのアクセス
<input type="text" name="setupwork" value=""/>
はその後pre_save信号にその値にアクセスします。
私はpre_saveパラメータを見ました:送信者、インスタンス、使用、** kwargsが見つかりましたが、そのフィールドを見つけることができませんでした。
私は、Djangoのフォームで簡単な非モデルフィールドを追加する必要があります。pre_save信号に非モデルフィールドへのアクセス
<input type="text" name="setupwork" value=""/>
はその後pre_save信号にその値にアクセスします。
私はpre_saveパラメータを見ました:送信者、インスタンス、使用、** kwargsが見つかりましたが、そのフィールドを見つけることができませんでした。
あなたは自分のフォームに隠しフィールドを追加したいかのようにそれはそれはそれで
class MyForm(Form):
my_field = forms.CharField(widget=forms.HiddenInput())
def clean_my_field(self):
data = self.cleaned_data['my_field']
if data:
raise ValidationError()
return data
ありがとうございますが、よりグローバルな方法ではありません。私は、第三者のモジュールのモデルと表示コードにアクセスすることができません –
実際の問題の[mcve]を作成しようとしてください... – Sayse
回答何かを持っている場合は、その後にチェックでき、聞こえる:私はpre_saveからフォームにアクセスできることを考えていたが信号。上記で貢献者によって説明したように、これは当てはまりません。フォームデータとの関連でしかモデルデータにアクセスすることはできません。私の場合、htmlフォームにのみ追加されたフィールドは、pre_saveインスタンスに表示されるようになりました。
POSTメソッドでトリガーされるカスタムミドルウェアを作成し、切り離されたhtmlフォームフィールドの有無と内容を確認することで、この問題を解決しました。
'pre_save'は、フォームではなく、モデルの信号です。正確に何をしようとしていますか? – Sayse
私は「ハニーポット」フィールドを持っています。それは、常に空であるはずの隠れたフォームフィールドです(人間はそれを埋めないでしょう)。だから、フォームが提出されたときに、いつもこのフィールドが空であることを確認する必要があります。モジュールがありますが、django-allauthで問題が発生するので、簡単なカスタム実装をしようとしています。フォームのシグナルがありますか? –
モデルフォームを使用しようとしていますか、フォームに隠しフィールドを含めるだけですか? – Sayse