2013-12-09 21 views
6

mio serializzatore, piuttosto essenziali:Resto serializzatore quadro restituisce sempre False per is_valid

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

voluto provare da shell, ma ottengo False ogni volta che provo a controllare per la convalida.

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

Perché è questo? Cosa sta succedendo?

+0

Finisco qui con problema oposit. Serializzatore sempre valido ,, perché si mischia Serializer con ModelSerializer .... – andi

+0

@andi Penso che dovresti fare una nuova domanda con il tuo codice incluso. – Salyangoz

risposta

6

penso che è necessario specificare i dati in modo esplicito:

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

Altrimenti si presume che il primo argomento è un esempio modello, ma che non è il caso qui.

+0

Sembrerebbe così. ma quando 'data' viene dato esplicitamente, il valore s.data restituisce 'None'. Quando ho fatto questo: – Salyangoz

+3

@Salyangoz è il comportamento previsto per impedire l'accesso accidentale ai dati prima della convalida. Come dice la documentazione, devi chiamare 'is_valid()' prima che 's.data' riceva un valore. Prima di ciò sarà effettivamente 'None'. –

Problemi correlati