2013-12-09 8 views
6

My serileştiriciye için yanlış döndürür:istirahat çerçeve serileştirici daima oldukça basit, is_valid

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

kabuğundan denemek istedim ama doğrulama için bunu kontrol etmek deneyin her zaman False olsun.

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

Neden? Ne oluyor?

+0

Burada oposit sorunuyla karşılaşıyorum. Serializer her zaman geçerlidir, çünkü ModelSerializer ile Serializer karıştırılıyor .... – andi

+0

@andi Ben de dahil olmak üzere kodunuz ile yeni bir soru yapmanız gerektiğini düşünüyorum. – Salyangoz

cevap

6

Ben açıkça verileri belirtmek gerek:

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

Aksi takdirde ilk argüman modeli örneğidir ama bu durum burada değil varsayar.

+0

Öyle görünüyor. ancak "veriler" açık bir şekilde verildiğinde, s.data değeri "Hiçbiri" değerini verir. Bunu yaptıktan sonra: – Salyangoz

+3

@Salyangoz, verilerin doğrulamadan önce yanlışlıkla erişilmesini önlemek için beklenen davranıştır. Dokümantasyon 's_data' bir değer alır önce' is_valid() 'çağırmanız gerektiğini söyledi. Bundan önce aslında 'Yok' olacaktır. –