From 5f40ab53dedb8dbf7e8b6cd9eefb71cfb5bf5279 Mon Sep 17 00:00:00 2001 From: Michael Bacon Date: Tue, 30 Jun 2015 14:51:47 -0400 Subject: [PATCH] Ability to customize DateTimeField with a custom datetime_parser --- rest_framework/fields.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 7960295bd..5450de196 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -888,11 +888,13 @@ class DateTimeField(Field): format = api_settings.DATETIME_FORMAT input_formats = api_settings.DATETIME_INPUT_FORMATS default_timezone = timezone.get_default_timezone() if settings.USE_TZ else None + datetime_parser = datetime.datetime.strptime - def __init__(self, format=empty, input_formats=None, default_timezone=None, *args, **kwargs): + def __init__(self, format=empty, datetime_parser=None, input_formats=None, default_timezone=None, *args, **kwargs): self.format = format if format is not empty else self.format self.input_formats = input_formats if input_formats is not None else self.input_formats self.default_timezone = default_timezone if default_timezone is not None else self.default_timezone + self.datetime_parser = datetime_parser if datetime_parser is not None else self.datetime_parser super(DateTimeField, self).__init__(*args, **kwargs) def enforce_timezone(self, value): @@ -924,7 +926,7 @@ class DateTimeField(Field): return self.enforce_timezone(parsed) else: try: - parsed = datetime.datetime.strptime(value, format) + parsed = self.datetime_parser(value, format) except (ValueError, TypeError): pass else: