我有以下型号
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()方法的情况下实现这一目的?
答案 0 :(得分:0)
您需要创建自己的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)
答案 1 :(得分:0)
正如飞机所建议的那样,我在前端使用JavaScript内置的Date实现(直到现在才了解它)。它非常适合处理格式和区域设置。
具体来说,我使用了这个对象函数:Date.prototype.toLocaleFormat