2016-08-22 5 views
0

Wie genau verwende ich Validatoren in meinen Serialisierern? Ich habe gerade meine Validatoren in app/validators.py erstellt und habe meine Serialisierer in app/serializers.py.Django REST Framework Serializer Validierung

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('') 

Meine Frage im Grunde: stelle ich die item_date als Parameter hier oder ist es nicht arbeiten?

Antwort

0

können Sie Validierung hinzufügen, wie diese Validierung

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

DRF ermöglicht Feldebene bis Serialisierer. Haben Sie Ihren Funktionsnamen wie folgt: def validate_ (Feldname). und drf wird diese Funktion gegen den entsprechenden Feldnamen ausführen. Im folgenden Code "validate_item_date" entspricht DRF dem Feld "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 
Verwandte Themen