Solución:
El problema resultó ser que necesitaba los formatos de fecha ISO y UK en el settings.py
archivo así:
DATE_INPUT_FORMATS = ('%d-%m-%Y','%Y-%m-%d')
y luego el forms.py se ajustó a lo siguiente:
class ClientDetailsForm(ModelForm):
date_of_birth = DateField(input_formats=settings.DATE_INPUT_FORMATS)
class Meta:
model = ClientDetails
Por qué USE_L10N = True
¡No puedo hacer esto, no lo sé!
[Thanks to this and this]
DATE_INPUT_FORMATS
en settings.py no tiene ningún efecto con USE_I18N = True
. Esto se debe a que django cargará un formato específico para la configuración regional activa. Django se envía con definiciones de formato para muchas configuraciones regionales diferentes.
Puede anular las definiciones de formato predeterminado de django:
mysite/
formats/
__init__.py
en/
__init__.py
formats.py
Como se describe en la documentación de django: Creación de archivos de formatos personalizados
En la respuesta de Sevenearths está el comentario.
Por qué
USE_L10N = True
¡No puedo hacer esto, no lo sé!
La documentación dice que USE_L10N = True
es la configuración predeterminada, pero para que las fechas del Reino Unido funcionen, LANGUAGE_CODE
también debe cambiarse de su configuración predeterminada de en-us
para en-GB
.
Una vez modificados, los campos de fecha aceptan automáticamente los formatos “dd / mm / aaaa” y “aaaa-mm-dd” (y posiblemente otros, no los he probado todos) sin necesidad de configurar input_formats = settings.DATE_INPUT_FORMATS
en cada campo de fecha del formulario.