2016-11-30 8 views
1

を作成する上で動作していないDjangoのモデルのバリデータは、私がフィールドバリデータでモデルを持っている

from django.db import models 
from django.core.validators import MinValueValidator, MaxValueValidator 

class MyModel(model.Model): 
    name = models.CharField() 
    size = models.IntegerField(validators=[MinValueValidator(1),MaxValueValidator(10)]) 

私は値10以上を入力しようとしながら、バリデータは、Djangoの管理パネルではうまく機能している、それは私見せてエラーメッセージ'この値が10以下であることを確認してください。、保存することはできません。

しかし、私はジャンゴシェルで試してみると、バリデーターが動作していない、レコードを保存することができます、なぜバリデーターがここにエラーメッセージを投げているのかわかりません。

>>>form app.models import MyModel 
>>>MyModel.objects.create(name="Some Name", size=15) 
<MyModel: Some Name> 

私が逃したものや何か間違いがあった場合に私にお勧めしますか?親切に私はこの問題を解決するのに役立ちます、それは私にとって非常にgreatfullになります、事前に感謝します。

+0

以下の回答があなたの質問を解決しましたか?はいの場合は、親切にupvoteして受け入れます。 – user2722127

答えて

2

Djangoの検証は、ほとんどのアプリケーション・レベルの検証とDBのレベルではないの検証です。また、モデルのsave/createでは、モデル検証は自動的に実行されません。コード内の特定の時刻に値を検証する場合は、手動で行う必要があります。例えば

:あなたはすべてのモデルのフォーム(ModelForm)はフォームのバリデーションと一緒にモデルの検証プロセスを実行しますので、それは自動的に動作政権では、Djangoのドキュメントhttps://docs.djangoproject.com/en/1.10/ref/models/instances/#validating-objects

で見ることができます

from django.core.exceptions import ValidationError 
form app.models import MyModel 

instance = MyModel(name="Some Name", size=15) 
try: 
    instance.full_clean() 
except ValidationError: 
    # Do something when validation is not passing 
else: 
    # Validation is ok we will save the instance 
    instance.save() 

詳細情報。

データが信頼できないソース(ユーザー入力)からのものであることを確認する必要がある場合は、ModelFormを使用し、フォームが有効な場合のみモデルを保存する必要があります。

関連する問題