2013-12-09 4 views
6

Mein Serializer recht einfach:Rast Rahmen Serializer gibt immer False für is_valid

class TestSerializer(serializers.Serializer): 
    date_time = serializers.DateTimeField() 

wollte von Shell ausprobieren, aber ich erhalte False jedes Mal, wenn ich versuche, es für die Validierung zu überprüfen.

> import datetime 
> s=TestSerializer({'date_time': datetime.datetime(year=2012,month=12,day=12)} 
> s.data 
{'date_time': datetime.datetime(2012, 12, 12, 0, 0)} 
> s.is_valid() 
False 
> s.errors 
{u'non_field_errors': [u'No input provided']} 

Warum ist das? Was ist los?

+0

Ich lande hier mit oposit Problem. Serializer immer gültig ,, weil Serializer mit ModelSerializer mischen .... – andi

+0

@andi Ich denke, Sie sollten eine neue Frage mit Ihrem Code enthalten. – Salyangoz

Antwort

6

Ich glaube, Sie müssen explizit Daten angeben:

s = TestSerializer(data={'date_time': datetime.datetime(year=2012,month=12,day=12)} 

Ansonsten geht davon aus, dass das erste Argument eine Modellinstanz ist, aber das ist hier nicht der Fall.

+0

Es scheint so. Aber wenn die 'Daten' explizit angegeben werden, gibt der s.data Wert 'None'. Als ich das tat: – Salyangoz

+3

@Salyangoz das erwartete Verhalten vor versehentlichem Zugriff auf Daten vor der Validierung zu verhindern. Wie die Dokumentation sagt, müssen Sie 'is_valid()' aufrufen, bevor 's.data' einen Wert erhält. Davor wird es tatsächlich "None" sein. –

Verwandte Themen