2016-08-22 17 views
0

シリアライザでどのようにバリデータを正確に使用しますか?私は現在app/validators.pyにバリデーターを作成しており、シリアライザはapp/serializers.pyにしています。Django REST Frameworkシリアライザ検証

class OrderItemSerializer(serializers.ModelSerializer): 
    item_id = serializers.IntegerField() 
    item_date = serializers.DateTimeField() 
    ... 

    class Meta: 
     model = Item 
     validators = [validate_item_date] 
     fields = ('item_id', 'item_date') 

from rest_framework.serializers import ValidationError 

validators.py

def validate_item_date(item_date): 
    if item_date < {something}: 
     raise ValidationError('') 

私の質問は基本的に:私はここで、パラメータとしてitem_dateを提供しないか、それがこのように動作していないのですか?

答えて

0

あなたはこの

class OrderItemSerializer(serializers.ModelSerializer): 
    def validate_item_date(self, item_date): 
     if item_date < {something}: 
      raise ValidationError('') 
     return item_date 
0

ようシリアライザに検証を追加することができますDRFは、フィールドレベルの検証が可能になります。あなたの関数名は:def validate_(fieldname)としてください。 drfは対応するフィールド名に対してその関数を実行します。以下のコードでは、 "validate_item_date"、drfはフィールド "item_date"に対応しています。

class OrderItemSerializer(serializers.ModelSerializer): 
    item_date = serializers.DateTimeField() 

    class Meta: 
     model = Item 

    def validate_item_date(self, value): 
     if value < 10: 
      raise ValidationError('') 
     return value 
関連する問題