comment modifier le format de date par défaut AAAA-MM-JJ à jj / mm / aaaa dans Django?
-
16-09-2019 - |
Question
Ma locale dateformat est jj / mm / aaaa et Django est requering-AAAA MM-JJ
lorsque les entrées utilisateur 04/11/2009 Django: soulève
_('Enter a valid date in YYYY-MM-DD format.'))
Im en utilisant de type simple champ de saisie html = "text", pas forms.DateField
Merci:)
La solution
Je suppose que vous utilisez un forms.DateField
. Si oui, vous devez fournir un argument input_formats
comme ceci:
class MyForm(forms.Form):
start_date = forms.DateField(input_formats=['%d/%m/%Y'])
input_formats prend juste une liste des formats que vous voulez accepter.
Voir http://docs.djangoproject.com/en/ dev / ref / formes / champs / # datefield pour plus d'informations.
Autres conseils
D'après le poste et les commentaires de l'OP, il semble qu'il y ait plus ici que d'utiliser simplement input_formats pour le champ de date, si vous voulez faire. Le message 'Entrez une date valide au format AAAA-MM-JJ' est une exception et pas une erreur de validation de formulaire. Vous aurez cette exception si vous essayez d'enregistrer une instance de modèle à l'aide d'une chaîne de date qui n'est pas 'AAAA-MM-JJ.
Il est nécessaire d'utiliser un DateField sous la forme, et puis instancier le modèle en utilisant les données nettoyées, ce qui est un objet datetime. On dirait que l'OP a été instancié avec le modèle avec une chaîne plutôt qu'un objet datetime.
Cette section de la documentation Django traite la préparation des données DateField: https: // docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#what-happens-when-you-save