Djangoのバリ
Djangoは再検証、判定ロジック機能に使用することができます
バリ
- UniqueValidator
- この検証は、制約を強制するユニーク= Trueのフィールドをモデル化するために使用することができます。これは、必要なパラメータとオプションパラメータメッセージを取ります。
- クエリセットが必要 - これは、クエリセットの一意性を強制することになっています。
- メッセージ - 認証が失敗したときに使用されるエラーメッセージ。
- 検索-従来例の検索では、検証値を持っています。デフォルトでは、「正確な」です。
これは、以下のように適用されたバリデータシリアライザフィールドにすべきである:
バリ= [UniqueValidator(BlogPost.objects.allクエリセット=())]
- この検証は、制約を強制するユニーク= Trueのフィールドをモデル化するために使用することができます。これは、必要なパラメータとオプションパラメータメッセージを取ります。
- UniqueTogetherValidator
- この手順では、制約を強制するためのモデルunique_together例を検証するために使用することができます。これは、2つの必須パラメータと1件のオプションのパラメータのメッセージがあります。
- クエリセットが必要 - これは、クエリセットの一意性を強制することになっています。
- フィールドが必要 - フィールド名またはタプルセットのユニークなリストを作成してください。これらは、クラスのフィールドのシーケンスとして存在している必要があります。
- メッセージ - 認証が失敗したときに使用されるエラーメッセージ。
クラスTaskSerializer(serializers.ModelSerializer):
クラスのMeta:
モデル=タスク
フィールド=( '名前'、 'キーワード'、 'user_idの')validators = [ UniqueTogetherValidator( queryset=Task.all(), fields=['user_id', 'name'], message='相同任务名已存在' ), UniqueTogetherValidator( queryset=Task.all(), fields=['user_id', 'keyword'], message='相同关键字已存在' ), ]
- この手順では、制約を強制するためのモデルunique_together例を検証するために使用することができます。これは、2つの必須パラメータと1件のオプションのパラメータのメッセージがあります。
オプションのフィールド
すべてのフィールドが必要=真の検証「のみで、」デフォルトでは、必須です。いくつかのケースでは、あなたが明示的に要求することをお勧めします= Falseのは、この場合には、行動の必要な検証が明確ではないが、フィールドのいずれかに適用されます。
このケースでは、通常のクラスの検証プログラムシーケンスから除外しますが、任意の検証ロジックの観点で書かれた明示的.validate()メソッドまたは。
例えば:
class BillingRecordSerializer(serializers.ModelSerializer):
def validate(self, data):
# Apply custom validation either here, or in the view.
class Meta:
fields = ['client', 'date', 'amount']
extra_kwargs = {'client': {'required': False}}
validators = [] # Remove a default "unique together" constraint.
カスタムバリデータ
def judge(aaa):
if len(aaa) != 40:
print('长度不正确')
return
from xxx import judge
validators =