2015-10-22 9 views
8

私はこのフィールドを使用します。Djangoの残りのフレームワークの日時フィールド形式

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

と私はURLを休ませる行くとき、私は時間を取得:

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

が、私は日付をシリアル化し、その後でそれを送信しますGCMプッシュはmiliseconds(2015-10-22T19:53:43.777171)を追加しますが、どうすればこの問題を解決できますか?これらの2つを混合するのではなく、使用するフォーマットは1つだけです。

どうすればこの問題を解決できますか?

私はこれをiOS Swiftアプリに使用します。

答えて

11

出力形式を表す文字列として値を持つordered_dateフィールドには、formatパラメータを指定できます。例えば

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

が、これは入力フォーマットをシリアル化するために使用することはできますか? –

+0

@ user1362215上記のコード例を示してください。 –

+3

'DATETIME_FORMAT'(APIが返すフォーマット)と' DATETIME_INPUT_FORMATS'(APIが受け入れるフォーマットのリスト)を使って 'REST_FRAMEWORK'の設定でグローバルなデフォルトを設定することもできます。 – Kazanz

関連する問題