2017-01-16 7 views
0

私は、Djangoのフォームで簡単な非モデルフィールドを追加する必要があります。pre_save信号に非モデルフィールドへのアクセス

<input type="text" name="setupwork" value=""/> 

はその後pre_save信号にその値にアクセスします。

私はpre_saveパラメータを見ました:送信者、インスタンス、使用、** kwargsが見つかりましたが、そのフィールドを見つけることができませんでした。

+3

'pre_save'は、フォームではなく、モデルの信号です。正確に何をしようとしていますか? – Sayse

+0

私は「ハニーポット」フィールドを持っています。それは、常に空であるはずの隠れたフォームフィールドです(人間はそれを埋めないでしょう)。だから、フォームが提出されたときに、いつもこのフィールドが空であることを確認する必要があります。モジュールがありますが、django-allauthで問題が発生するので、簡単なカスタム実装をしようとしています。フォームのシグナルがありますか? –

+0

モデルフォームを使用しようとしていますか、フォームに隠しフィールドを含めるだけですか? – Sayse

答えて

1

あなたは自分のフォームに隠しフィールドを追加したいかのようにそれはそれはそれで

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 
+0

ありがとうございますが、よりグローバルな方法ではありません。私は、第三者のモジュールのモデルと表示コードにアクセスすることができません –

+0

実際の問題の[mcve]を作成しようとしてください... – Sayse

0

回答何かを持っている場合は、その後にチェックでき、聞こえる:私はpre_saveからフォームにアクセスできることを考えていたが信号。上記で貢献者によって説明したように、これは当てはまりません。フォームデータとの関連でしかモデルデータにアクセスすることはできません。私の場合、htmlフォームにのみ追加されたフィールドは、pre_saveインスタンスに表示されるようになりました。

POSTメソッドでトリガーされるカスタムミドルウェアを作成し、切り離されたhtmlフォームフィールドの有無と内容を確認することで、この問題を解決しました。

関連する問題