2

我有类似的东西

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 字段中,然后将日期设置为带有与之关联的时区的日期时间。

这可能吗?

4

1 回答 1

1

是的,这是可能的。

Django 支持时区感知日期,但大多数后端存储 datetimes在 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)

我希望这会有所帮助。

于 2013-10-02T12:27:04.340 回答