Django日期时间格式与DRF序列化器日期时间格式不同

时间:2018-12-21 19:20:29

标签: python django django-rest-framework

我试图了解为什么会这样。我有一个Django DateTime字段和使用该字段的Django Rest Framework序列化程序。

我正在尝试比较两个日期,并从JSON端点和模型结果中获取以下结果:

DRF: 2018-12-21T19:17:59.353368Z
Model field: 2018-12-21T19:17:59.353368+00:00

有没有办法使它们相似?因此,可以将它们都设为“ Z”或“ +00:00”。

3 个答案:

答案 0 :(得分:4)

我从Google来到这里,寻求一种快速修复方法(例如复制和粘贴)。因此,借鉴@RezaTorkamanAhmadi的答案,对于希望获得DRF序列化器DateTimeField格式为models.DateTimeField(与默认# settings.py REST_FRAMEWORK = { ... 'DATETIME_FORMAT': "%Y-%m-%d %H:%M:%S.%f%z", ... } 相同的格式,以便您的序列化值与模型值匹配的任何人) OP的问题也是我的问题),您正在寻找以下哪一个?

from rest_framework import serializers

class MySerializer(serializers.Serializer):

    some_date = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S.%f%z")

或者如果您只想在特定的DateTimeField序列化器字段中查找

snmp2_get()

来源:

  1. https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
  2. https://www.django-rest-framework.org/api-guide/fields/#datetimefield
  3. https://stackoverflow.com/a/53893377/10541855(Reza Torkaman 艾哈迈迪的答案)

答案 1 :(得分:3)

这是因为django rest框架使用了它自己的日期时间格式。要更改此设置,请在您的settings.py文件中,存在一个名为REST_FRAMEWORK的dict变量(如果未创建的话)并添加以下内容:

REST_FRAMEWORK = {
    ...
    'DATETIME_FORMAT': "%Y-%m-%d - %H:%M:%S", 
    ...
}

还要在您的USE_TZ中检查settings.py变量状态

答案 2 :(得分:1)

除了上一个答案,您还可以在序列化程序中更改$("#table-body #c1").on('click','tr',function(e){ console.log($(this).text()); }); 格式。

DateTime