如何改变tastypie时间格式

Eri*_*ong 3 django tastypie

我正在使用Django 1.4.2和Tastypie 0.9.11编写API服务器.

对于所有日期时间输出,我使用默认的iso 8601格式,例如:"2012-11-20T02:48:19 + 00:00".但我希望获得"2012-11-20T02:48:19Z"格式.如何在不自定义每个日期时间字段的情况下轻松完成?

小智 9

此页面中有一个名为TASTYPIE_DATETIME_FORMATTING的配置http://django-tastypie.readthedocs.org/en/latest/serialization.html.但是,这为您提供了有限的选择(iso-8601和rfc-2822).

您可以做的是为您的资源使用自定义Serializer

# models.py
class MyModel(models.Model):
    class Meta:
        verbose_name = 'my_model'

# api.py
from custom_serializer import MySerializer
class MyResource(ModelResource):
    class Meta:
        queryset = MyModel.objects.all()
        serializer = MySerializer()

#custom_serializer.py
from tastypie.serializers import Serializer
class MySerializer(Serializer):
    def format_datetime(self, data):
        return data.strftime("%Y-%m-%dT%H:%M:%SZ")
Run Code Online (Sandbox Code Playgroud)

这里有详细介绍 - http://django-tastypie.readthedocs.org/en/latest/serialization.html