我是django和rest框架的新手。我有这个事件序列化器,在其中我想返回本地化日期。但是在更新事件时我想使用日期验证。所以基本上我想在提取时组合SerializerMethodField,在保存/更新时组合DateField验证。谢谢
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 :(得分:0)
要显示格式化日期,您可以使用以下结构:
start = serializers.DateField(format='%m-%d-%Y', input_formats=['%m-%d-%Y'], source='created')
我认为你不能以这种方式处理序列化器字段和序列化器方法字段。如果您无法通过input_formats
实现所需,我认为您可以在视图中覆盖POST方法,并更新传递给序列化程序的数据。