Старая проблема, я знаю.Но я все еще не мог найти рабочее решение, поэтому, возможно, я упустил что-то очевидное.Вот моя форма
class AddPatientForm(forms.Form):
last_name = forms.CharField(label='Nom', max_length=40)
first_name = forms.CharField(label='Prénom', max_length=40)
birthday = forms.DateField(label='date de naissance',
widget=forms.DateInput(format='%d/%m/%Y',attrs={'placeholder': '31/03/1989'}),
input_formats=['%d/%m/%Y',])
Это соответствует соглашению о формате, и должно сделать это .Вот моя модель :
class Patients(models.Model):
first_name = models.CharField(max_length=40)
last_name = models.CharField(max_length=40)
birth_date = models.DateField()
inscription = models.DateTimeField(auto_now_add=True)
А вот что я пытался в setting.py , чтобы избавиться от проблемы
DATE_FORMAT = "d-m-Y"
DATE_INPUT_FORMATS = ['%d-%m-%Y']
USE_L10N = False
Несмотря на это, у меня все еще возникла та же проблема:
form = AddPatientForm(request.POST)
if form.is_valid():
form.clean()
d = Patients(first_name= form["first_name"].value(),
last_name= form["last_name"].value(),
birth_date= form["birthday"].value())
d.save()
>>>>["Le format de date de la valeur «\xa027/10/1987\xa0» n'est pas valide. Le format correct est AAAA-MM-JJ."]
[ disclaimer ] Я не пытаюсь переопределить соглашение о формате модели и знаю, чтовопрос о том, как даты « действительно хранятся в db » не имеет значения (отличается от одной СУБД к другой; модели django об этом не знают).Но это такая булавка, чтобы бороться с такой простой задачей.Почему я не могу:
- использовать другой формат для форм и моделей?
- каким-то образом переопределить этот параметр?
Разве это не фактбудучи DateField с явным форматом, предоставленным с явными параметрами, достаточными для валидатора, чтобы понять, что к чему?Чего мне не хватает?
Любое понимание приветствуется