2012-08-26 8 views
10

私のモデルでは、django DateFieldを使用しています。カスタムフォームのないDjangoモデルフィールドの検証

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

私のmodelFieldに固有のカスタム検証方法があります。実際に月曜日であることを確認したいと思います。私は現在、管理者の中でカスタムModelFormを使用する理由はありません.Djangoが生成するものはうまくいきます。カスタムフォームクラスを作成するだけで、djangoフォームクラスが提供するclean_start_monday(self)1砂糖を利用すると、フィールド検証を追加するだけの多くの作業のようです。私はoverride the model's clean methodValidationErrorを上げることができることを実現します。しかし、これは理想的ではありません。これらのエラーは、フィールドエラーではなく、問題のあるユーザー入力の次ではなく、ページの上部に表示されます。理想的なUXではありません。

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

答えて

14

Django Validatorsを調べることができます。

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

ニース!どのように私はこれを見逃していたのか分かりません。 –

+0

クール!以前は使ったことはありませんでしたが、これはとてもきれいです。クリーンバリデータを投稿してください! –

関連する問題