2016-02-07 52 views
0

我是django和rest框架中的新成員。我得到了這個Event序列化程序,並且我想返回本地化的日期。但更新事件時,我想使用日期驗證。所以基本上我想SerializerMethodField合併獲取和保存/ updating.Thanks在Django中結合SerializerMethodField和DateField rest_framework

from rest_framework import serializers 
from account.models import Events 

import main.helpers as helpers 

class EventsSerializer(serializers.ModelSerializer): 
    title = serializers.CharField(required=True, max_length=200) 
    url = serializers.CharField(required=False, max_length=100) 
    allDay = serializers.BooleanField(required=False) 
    # start = serializers.DateField(format=None, input_formats=None) 
    # end = serializers.DateField(format=None, input_formats=None) 
    start = serializers.SerializerMethodField('get_start_local') 
    end = serializers.SerializerMethodField('get_end_local') 
    def get_start_local(self, obj): 
     return helpers.utcToLocal(obj.start) 
    def get_end_local(self, obj): 
     return helpers.utcToLocal(obj.end) 
    class Meta: 
     model = Events 
     fields = ('id', 'title', 'url', 'allDay', 'published', 'start', 'end') 
     # fields = ('id', 'title', 'url', 'allDay', 'published', 'start', 'start_local', 'end', 'end_local') 

回答

0

用於顯示格式的日期時的DateField驗證時,您可以使用以下結構:

start = serializers.DateField(format='%m-%d-%Y', input_formats=['%m-%d-%Y'], source='created')

我不您認爲您可以通過這種方式處理序列化程序字段和序列化程序方法字段。如果您無法通過input_formats達到您想要的效果,我認爲您可以在視圖中重寫您的POST方法,並更新您傳遞給序列化程序的數據。