2013-12-09 8 views
6

My serializatora, dość proste:Reszta ramy serializer zawsze zwraca False dla is_valid

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

chciał wypróbować z muszli, ale pojawia False za każdym razem staram się sprawdzić go do walidacji.

> 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']} 

Dlaczego tak jest? Co się dzieje?

+0

Kończę tutaj z problemem oposit. Serializer zawsze jest ważny, ponieważ mieszanie Serializera z ModelSerializer .... – andi

+0

@i myślę, że powinieneś zadać nowe pytanie z załączonym kodem. – Salyangoz

Odpowiedz

6

Chyba trzeba podać dane wyraźnie:

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

przeciwnym razie zakłada, że ​​pierwszy argument jest przykładem modelu, ale nie w tym przypadku.

+0

Wydawałoby się, że tak. ale gdy 'dane' jest podane jawnie, to wartość s.data daje' Brak'. Kiedy to zrobiłem: – Salyangoz

+3

@ Salyangoz to oczekiwane zachowanie, aby zapobiec przypadkowemu dostępowi do danych przed sprawdzeniem poprawności. Ponieważ dokumentacja mówi, że musisz wywołać 'is_valid()' zanim 's.data' uzyska wartość. Wcześniej będzie to "Brak". –