2016-08-22 77 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 
相关问题