【问题标题】:How to change DateTime model field representation in serializer?如何更改序列化程序中的 DateTime 模型字段表示?
【发布时间】:2015-09-05 03:57:42
【问题描述】:

我想创建一个以 JSON 格式返回一些模型对象的视图。 DateTimeField 例外,它序列化原始值,而不是模板中表示的,一切正常。我怎样才能得到漂亮的价值而不是原始的,如下所示?

型号:

class Request(models.Model):
    created_at = models.DateTimeField(auto_now=True)

序列化:

serializers.serialize('json',
            list(Request.objects.filter(
                    id__gt=request.GET.get("last_id", 0)
                )[:MAX_REQUESTS])
        ),

预期:

2015 年 6 月 19 日上午 8 点 24 分

结果:

2015-06-19T08:23:18.021Z

【问题讨论】:

  • 创建自定义编码器documentation,如果你使用json api,也许更好的是使用django rest framework
  • @Wolkodav 你能提供一个例子,我该如何创建这个?文档示例并没有想象的那么清晰。

标签: python django datetime django-models datetime-format


【解决方案1】:

您可以返回带有 ISO 格式的 DateTime 字段的 JSON 序列化数据,然后从您的 javascript 中,您可以根据需要解析和格式化日期。见:Help parsing ISO 8601 date in Javascript

import json

json.dumps(your_requests, default=lambda obj: obj.isoformat() if hasattr(obj, 'isoformat') else obj)

【讨论】:

    猜你喜欢
    • 2020-08-17
    • 1970-01-01
    • 2015-02-12
    • 2016-08-23
    • 2019-08-28
    • 2019-01-17
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    相关资源
    最近更新 更多