django-rest-framework自定义可写字段在modelserializer中

时间:2013-10-02 04:59:18

标签: django django-rest-framework

我有类似

的东西
class PostSerializer(serializers.HyperlinkedModelSerializer):
    tz = serializers.Field()

    class Meta:
        model = Post

        fields = ('id', 'url', 'user', 'date', 'show', 'body', 'role', 'image', 'images', 'lat', 'lng', 'tz')
        read_only_fields = ('id', 'user', 'created', 'meta', 'date_utc')

我的最终目标是将时区传入tz字段,然后将日期设置为具有与之关联的时区的日期时间。

这可能吗?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。

Django supports timezone aware datesmost of the backends store datetimes in UTC。如果您正在使用其中一个,那么您可以按照建议存储时区。然后,您可以将此映射回DRF' SerializerMethodField

也许是这样的:

class PostSerializer(serializers.HyperlinkedModelSerializer):
    ...
    local_datetime = serializers.SerializerMethodField('get_local_datetime')


    ...
    def get_local_datetime(self,obj):
        return pytz.timezone(obj.tz).localize(obj.datetime)

我希望有所帮助。