簡體   English   中英

在Django rest_framework中結合SerializerMethodField和DateField

[英]Combine SerializerMethodField and DateField in django rest_framework

我是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')

要顯示格式化的日期,可以使用以下結構:

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

我認為您不能以這種方式處理序列化程序字段和序列化方法字段。 如果您無法使用input_formats實現input_formats我認為您可以在視圖中覆蓋POST方法,並更新傳遞給該視圖中的序列化器的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM