Django model DateTimeField set auto_now_添加格式或修改序列号

2024-05-15 14:45:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我的模型中有这个字段:

createdTime = models.DateTimeField(_('Creation date'), help_text=_('Date of the creation'),
                                   auto_now_add=True, blank=True)

并以以下格式保存:

2016-05-18T15:37:36.993048Z

所以我想把它转换成这种格式DATE_INPUT_FORMATS = ('%d-%m-%Y %H:%M:S'),但我不知道该在哪里做。

我有一个简单的序列化程序类,我可以重写它来修改格式吗?或者创建一个get_date()模型方法?

class ObjectSerializer(serializers.ModelSerializer):
    """
    Serializer for object.
    """
    class Meta:
        model = Object

我的设置:

DATETIME_FORMAT = '%d-%m-%Y %H:%M:%S'

USE_I18N = True

USE_L10N = False

USE_TZ = False

Tags: oftext模型falsetruedateusemodels
1条回答
网友
1楼 · 发布于 2024-05-15 14:45:12

按指定的heresettings.py中设置DATETIME_FORMAT

The default formatting to use for displaying datetime fields in any part of the system. Note that if USE_L10N is set to True, then the locale-dictated format has higher precedence and will be applied instead

之后,您的settings.py的日期部分应该如下所示:

DATETIME_FORMAT = '%d-%m-%Y %H:%M:%S' 
USE_L10N = False
USE_TZ = False # if you plan to disable timezone support

或者,可以在检索后通过执行以下操作手动更改格式:

import datetime

datetime_str = '2016-05-18T15:37:36.993048Z'
old_format = '%Y-%m-%dT%H:%M:%S.%fZ'
new_format = '%d-%m-%Y %H:%M:%S'

new_datetime_str = datetime.datetime.strptime(datetime_str, old_format).strftime(new_format)
print(new_datetime_str)
#'18-05-2016 15:37:36'

此转换可以作为建议的get_date()方法添加到序列化程序或模型中

相关问题 更多 >