【问题标题】:How to format datetime in a serialized model Django如何在序列化模型 Django 中格式化日期时间
【发布时间】:2018-06-02 15:09:19
【问题描述】:

我有以下型号

class MyModel(models.Model):
    firstDate = models.DateTimeField(auto_now_add=True)
    another = models.CharField(max_length=30)

我用

将它序列化为 JSON
 query = MyModel.objects.all()
 data = serializers.serialize('json', query, use_natural_foreign_keys=True)

DateTimeField 返回以下格式:

2017-12-19T22:50:04.328Z

想要的格式是:

2017-12-19 22:50:04

有没有不使用 queryset.values() 和 queryset.extra() 方法的简单方法来实现这一点?

【问题讨论】:

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


【解决方案1】:

按照飞机的建议,我在前端使用 JavaScript 内置的 Date 实现来处理它(直到现在才知道)。它非常适合处理格式和语言环境。

具体来说,我使用了这个对象函数:Date.prototype.toLocaleFormat

【讨论】:

    【解决方案2】:

    您需要创建自己的 DjangoJSONEncoder 子类 - 它是 Python 标准 JSON 编码器的子类,可实现(除其他外)您希望更改的功能。:

    如果您查看the source code,这非常简单。您需要更改以以下开​​头的部分:

        if isinstance(o, datetime.datetime):
    

    让方法以您想要的格式返回日期时间。

    class MyJSONEncoder(DjangoJSONEncoder):
        def default(self, o):        
            if isinstance(o, datetime.datetime):
                # Your implementation here
            return super().default(o)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-20
      • 2011-11-20
      • 2016-03-11
      • 2016-03-23
      • 1970-01-01
      • 2017-05-24
      • 2013-03-15
      • 2019-01-05
      相关资源
      最近更新 更多