2015-10-22 9 views
8

Io uso questo campo:Django quadro resto formato campo datetime

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

e quando vado a riposare url, avrò tempo:

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

ma quando ho serializzare data e quindi inviarlo con Spinta GCM, aggiunge milisecondi (2015-10-22T19:53:43.777171), come posso risolvere questo problema, ho bisogno di un solo formato da utilizzare, non di mischiare con questi due.

Come posso risolvere questo problema?

Io lo uso per l'app ios swift.

risposta

11

È possibile specificare un parametro format nel campo ordered_date con valore come stringa che rappresenta il formato di output.

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

Ad esempio:

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

questo può essere utilizzato per serializzare un formato di input? –

+0

@ user1362215 Fornire un esempio di codice per quanto sopra. –

+3

Puoi anche impostare i valori globali nelle impostazioni di 'REST_FRAMEWORK' con' DATETIME_FORMAT' (formato restituito da API) e 'DATETIME_INPUT_FORMATS' (elenco dei formati accettati dall'API). – Kazanz