2015-10-22 10 views
8

bu alanı kullanın:Django kalan çerçeve datetime Alan biçimi

ordered_date = serializers.DateTimeField(format="iso-8601", required=False, read_only=True) 

ve ben url dinlenmeye giderken, ben zaman olsun:

"ordered_date": "2015-10-22T19:50:08" 

ama sonra tarih seri ve zaman ile gönderin GCM itme, milisaniye ekler (2015-10-22T19:53:43.777171), bunu nasıl düzeltebilirim, kullanacağım tek bir formata ihtiyacım var, bu ikisi ile karıştırılmamalıdır.

Bunu nasıl düzeltebilirim?

Bunu ios hızlı uygulaması için kullanıyorum.

cevap

11

ordered_date alanına çıktı biçimini temsil eden bir dize olarak değeri olan bir format parametresi belirtebilirsiniz. Örneğin

ordered_date = serializers.DateTimeField(format="%Y-%m-%dT%H:%M:%S", required=False, read_only=True) 

:

In [1]: from rest_framework import serializers 

In [2]: from datetime import datetime 

In [3]: class XYZSerializer(serializers.Serializer): # define a serializer with a datetime field 
    ...:  ordered_date = serializers.DateTimeField(format="%Y-%m-%dT%H:%M:%S") 
    ...:  

In [4]: x = XYZSerializer(data={'ordered_date':datetime.now()}) 

In [5]: x.is_valid() 
Out[5]: True 

In [6]: x.data # contains the datetime field in the desired format 
Out[6]: OrderedDict([('ordered_date', '2015-10-22T18:17:51')]) 
+1

bu bir giriş formatını seri hale getirmek kullanılabilir mi? –

+0

@ user1362215 Lütfen yukarıdaki kod örneği verin. –

+3

Ayrıca, global varsayılanları 'REST_FRAMEWORK' ayarlarınızda' DATETIME_FORMAT' (API tarafından döndürülen format) ve 'DATETIME_INPUT_FORMATS' (API tarafından kabul edilen biçimler listesi) ile ayarlayabilirsiniz. – Kazanz