¿Cómo cambiar el formato de fecha predeterminado AAAA-MM-DD a dd/mm/aaaa en Django?
-
16-09-2019 - |
Pregunta
Mi formato de fecha local es dd/mm/aaaa y Django solicita AAAA-MM-DD
cuando el usuario ingresa 11/04/2009 Django genera:
_('Enter a valid date in YYYY-MM-DD format.'))
Estoy usando un campo de entrada html simple tipo = "texto", no formularios.DateField
Gracias :)
Solución
Estoy asumiendo que usted está utilizando un forms.DateField
. Si es así, es necesario proporcionar un argumento input_formats
este modo:
class MyForm(forms.Form):
start_date = forms.DateField(input_formats=['%d/%m/%Y'])
input_formats simplemente toma una lista de los formatos que desea aceptar.
http://docs.djangoproject.com/en/ dev / ref / formas / campos / # datefield para más información.
Otros consejos
Según la publicación y los comentarios del OP, parece que aquí hay más que solo usar input_formats para el campo de fecha, aunque querrás hacerlo.El mensaje 'Ingrese una fecha válida en formato AAAA-MM-DD' es una excepción y NO un error de validación del formulario.Obtendrá esta excepción si intenta guardar una instancia de modelo utilizando una cadena de fecha que no sea 'AAAA-MM-DD'.
Lo que se necesita es usar un DateField en el formulario y luego crear una instancia del modelo usando los datos limpios, que es un objeto de fecha y hora.Parece que el OP estaba creando una instancia del modelo con una cadena en lugar de un objeto de fecha y hora.
Esta sección de los documentos de Django analiza la preparación de datos de DateField:https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#what-happens-when-you-save