2016-08-22 76 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 
相關問題