私はDjangoの管理者を経由して編集することを意図しているmodels.py
でシンプルなモデルがあるとします。Djangoモデルのcleanメソッドをオーバーライドすると、他の検証が中断されますか?
class Range(models.Model):
gt = models.IntegerField('Greater than')
lt = models.IntegerField('Lesser than')
def clean(self):
if self.gt >= self.lt:
raise ValidationError('Incorrect range')
問題を:上記のコードはgt
がlt
よりも小さいという仮定を確保する上で素晴らしい仕事をしていませんが、それは、 Djangoがすぐに提供するその他の基本的な検証も中断します。例えば、私はDjangoの管理者でこれらのフィールドのためのいくつかの非数値データを入力した場合、私は複数の画面にまたがるデバッグメッセージを提示しています:
を私はの定義からオーバーライドclean(self)
方法を削除した場合Range
、この基本的な検証が再び正常に動作し始める:
しかし、もちろん、今私はlt
より大きいgt
でRange
Sを入力することができます。
私は本当に私が間違っているのかわからない、私はしかし、私は単純にhttps://docs.djangoproject.com/en/1.9/ref/models/instances/#validating-objectsあたり
として、Djangoのドキュメント従っていましたので、私のミスですか?私のフォームの検証を正しく提供するには?