15

モデルでdjangoDateFieldを使用しています。

class CalWeek(models.Model):
  start_monday = models.DateField(verbose_name="Start monday")

modelFieldに固有のカスタム検証メソッドがあります。実際に月曜日であることを確認したいと思います。現在、管理者でカスタムModelFormを使用する理由はありません。Djangoが生成するもので問題ありません。clean_start_monday(self)django Formクラスが提供する1つの砂糖を利用できるように、カスタムフォームクラスを作成することは、フィールド検証を追加するためだけに多くの作業のように思えます。モデルのクリーンメソッドをオーバーライドして、そこでレイズできることに気付きValidationErrorました。ただし、これは理想的ではありません。これらのエラーはフィールド以外のエラーと見なされ、問題のあるユーザー入力の横ではなく、ページの上部に表示されます。理想的なUXではありません。

カスタムフォームクラスを使用せずに、特定のモデルフィールドを検証し、管理者のフィールドの横にエラーメッセージを表示する簡単な方法はありますか?

4

1 に答える 1

21

Djangoバリデーターを調べることができます。

https://docs.djangoproject.com/en/dev/ref/validators/

クラスの前にバリデーターを置き、フィールドにバリデーターを設定します。

def validate_monday(date):
    if date.weekday() != 0:
        raise ValidationError("Please select a Monday.")

class CalWeek(models.Model):
    start_date = models.DateField(validators=[validate_monday])
于 2012-08-26T05:59:13.637 に答える