2017-12-12 8 views
0

フォームのdjangoのclean()メソッドで個別のフィールドが検証に合格していないかどうかを調べる方法はありますか?個々のフィールドにエラーがあり、clean()を実行していないかどうかを確認するDjango?

必須フィールドがある場合、私は手動でチェックする必要がしたくない:blank=False, null=False(デフォルト)として宣言されている

def clean(): 
    cleaned_data = super().clean() 
    half_day = cleaned_data.get('half_day') 
    start_date = cleaned_data.get('start_date') 
    end_date = cleaned_data.get('end_date') 

    if start_date and end_date: 
     if half_day: 
      if start_date != end_date: 
       self.add_error(
        'half_day', 
        'Start and end date must be the same'  
       ) 
+0

上記のコードは上手く見えます。これは、[docsの例](https://docs.djangoproject.com/en/2.0/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-method)からの標準的なアプローチです。その他)。 – Alasdair

+0

'assert myform.is_valid()== true' – zvadym

答えて

1

start_date場合とend_date、あなたはこのような何かを行うことができます。

​​

スーパークリーンはerrorsバックテンプレートにリクエストをreturnされますし、フィールドに値があるかどうかを確認するに対処する必要はありません。

+0

注:私はまだ2.0を使用していません。スーパーコールがあまり冗長ではないことがわかります:) –

+0

ええ、それはPythonの新機能です。 '3.6' – surfer190

+0

クール!あなたはこの答えを受け入れることができますか? –

関連する問題