2016-08-22 1 views
0

Comment utiliser les validateurs dans mes sérialiseurs? J'ai actuellement créer mes validateurs dans app/validators.py et avoir mes sérialiseurs dans app/serializers.py.Validation du sérialiseur 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('') 

Ma question essentiellement: dois-je fournir le item_date comme paramètre ici ou il ne fonctionne pas comme ça?

Répondre

0

Vous pouvez ajouter à la validation sérialiseur comme celui-ci

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

DRF permet la validation de terrain. Avoir votre nom de fonction comme: def validate_ (fieldname). et drf exécutera cette fonction par rapport au nom de champ correspondant. Dans le code ci-dessous, "validate_item_date", drf correspond au champ "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