2015-10-22 26 views
8

tôi sử dụng lĩnh vực này:Django khuôn khổ còn lại định dạng lĩnh vực datetime

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

và khi tôi đi đến nghỉ ngơi url, tôi nhận được thời gian:

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

nhưng khi tôi serialize ngày và sau đó gửi nó với GCM đẩy, nó cho biết thêm miliseconds (2015-10-22T19:53:43.777171), làm thế nào tôi có thể sửa lỗi này, tôi chỉ cần một định dạng để sử dụng, không kết hợp với hai.

Tôi có thể sửa lỗi này bằng cách nào?

Tôi sử dụng tính năng này cho ứng dụng nhanh chóng.

Trả lời

11

Bạn có thể chỉ định tham số format cho trường ordered_date có giá trị dưới dạng chuỗi đại diện cho định dạng đầu ra.

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

Ví dụ:

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

này có thể được sử dụng để serialize một định dạng đầu vào? –

+0

@ user1362215 Vui lòng cung cấp ví dụ về mã ở trên. –

+3

Bạn cũng có thể đặt các giá trị mặc định chung trong cài đặt 'REST_FRAMEWORK' với' DATETIME_FORMAT' (định dạng được trả về bởi API) và 'DATETIME_INPUT_FORMATS' (danh sách các định dạng được API chấp nhận). – Kazanz

Các vấn đề liên quan