I have this field in my model:
createdTime = models.DateTimeField(_('Creation date'), help_text=_('Date of the creation'), auto_now_add=True, blank=True)
And it is saved with this format:
2016-05-18T15:37:36.993048Z
So I would like to convert it to this format DATE_INPUT_FORMATS = ('%d-%m-%Y %H:%M:S')
but I dont know where to do it.
I have a simple serializer class, could I override it to modify the format? or maybe create a get_date() model method?
class ObjectSerializer(serializers.ModelSerializer): """ Serializer for object. """ class Meta: model = Object
My settings:
DATETIME_FORMAT = '%d-%m-%Y %H:%M:%S' USE_I18N = True USE_L10N = False USE_TZ = False
Advertisement
Answer
Set DATETIME_FORMAT
in your settings.py
as specified here.
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
The date part of your settings.py
should afterwards look like so:
DATETIME_FORMAT = '%d-%m-%Y %H:%M:%S' USE_L10N = False USE_TZ = False # if you plan to disable timezone support
Alternatively, you can manually change formats after retrieval by doing:
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'
This conversion can be added to your serializer or model as your proposed get_date()
method