2015-12-02 210 views
1

我的模型包含一個日期時間字段,我希望在請求時將其轉換爲時間戳。這裏是get處理程序響應:DRF將日期時間轉換爲時間戳

def get(self, request, pk): 
    journal = Journal.objects.get(pk=pk) 
    serializer = LogSerializer(journal) 
    return Response(serializer.data) 

這裏是迴應:

{ 
    ...blah... 
    "created": "2015-12-02T08:57:16.881528Z", 
} 

我想這讓Unix時間戳:

from django.utils.dateformat import format 

def get(self, request, pk): 
    journal = Journal.objects.get(pk=pk) 
    journal.created = format(journal.created, 'U') #error, because the LogSerializer expects a datetime object instead of a string 
    serializer = LogSerializer(journal) 
    return Response(serializer.data) 

這是我的串行器與模型:

class LogSerializer(ModelSerializer): 
    class Meta: 
     model = Journal 


class Journal(Model): 
    created = models.DateTimeField(auto_now_add=True) 

有沒有辦法告訴JSONRender做到以下幾點:

if fieldName == 'created': 
    data['created'] = convert_to_timestamp(data['created']) 

或者我應該只需要修改字符串化的數據:

content = JSONRender(serializer.data) 
... find the position of the time string in content and replace it with the timestamp ... 

回答

2

您可以使用SerializerMethodField達到相同的。

response_created_date = serializers.SerializerMethodField('get_created_date') 

def get_created_date(self, obj): 
    return convert_to_timestamp(obj.created) 

點擊here瞭解更多信息。