所以我使用这段代码将Django对象序列化为JSON格式(所以我可以通过Celery发送给RabbitMQ):
import django.core.serializers as serializers
import json
def serialize(obj):
d = json.loads(serializers.serialize('json', [obj]).strip('[]'))
filtered_fields = {
'id': d['pk'],
}
for key, value in d['fields'].iteritems():
filtered_fields[underscore_to_camelcase(str(key))] = value
return filtered_fields
返回类似于:
的内容{
"firstName": "Foo",
"lastName": "Bar",
"createdAt": "2013-12-15T20:53:59.615",
"updatedAt": "2013-12-15T20:53:59.615",
"dateOfBirth": "1990-05-17",
"id": "foo@bar.com"
}
有没有办法告诉Django序列化程序将日期时间对象转换为Zulu格式?所以而不是:
2013-12-15T20:53:59.615
我想:
2013-12-15T20:53:59Z
答案 0 :(得分:0)
如果您使用django的simplejson进行序列化,您可以执行以下操作:
simplejson.dumps(data, cls=LazyEncoder)
并让LazyEncoder处理特殊情况,例如翻译和你的案例datetimeformat:
class LazyEncoder(simplejson.JSONEncoder):
def default(self, obj):
elif isinstance(obj, datetime.datetime):
return #your formatting goes here
唯一的问题是simplejson.dumps返回字符串。但是如果你研究一下,那么也许你可以为你的目的使用相同的lazyencoder(https://docs.djangoproject.com/en/dev/topics/serialization/#id2)。这里只是一个想法 - 我没有必要深入研究这个,所以我不确定这对你有用吗</ p>