2016-08-22 3 views
0

시리얼 라이저에 정확히 어떻게 validator를 사용합니까? 현재 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

당신은 DRF이 필드 레벨의 검증을 허용이

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

같은 시리얼 라이저 유효성 검사를 추가 할 수 있습니다. 함수 이름은 다음과 같습니다 : 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 
관련 문제