Формат ввода даты в Django, похоже, не принимается
Я поместил поле DateField внутри ModelForm, которое, кажется, работает нормально, если я добавляю новые записи в свою базу данных. Затем я добавил страницу, на которой я могу редактировать одну из этих записей. Конечно, я передаю дату нужной записи в HTML, но формат даты устанавливается не так, как ожидалось.
# models.py
class SomeModel(models.Model):
someDate = models.DateField()
description = models.CharField(max_length=100)
# forms.py
class SomeForm(forms.ModelForm):
someDate = forms.DateField(input_formats=["%d.%m.%y"], label="Some Date")
class Meta:
model = SomeModel
widgets = {
"someDate": forms.DateInput(format=("%d.%m.%y"))
}
# views.py
def someModel_edit(request: HttpRequest, id: int):
# ...
query = SomeModel.objects.get(id=id)
form = SomeForm(instance=query)
args = {
'form': form
}
return render(request, 'SomeHtml.html', args)
{% extends 'base.html' %}
{% block content %}
<h2>Edit Model</h2>
<form action="{% url 'someModel_edit' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" name="edit-someModel" value="Edit">
</form>
{% endblock %}
Я ожидаю, что формат даты на странице редактирования будет таким, как я настроил в файле forms.py (например, 12.08.2024). К сожалению, он всегда выглядит так:
И что еще хуже, если я редактирую описание записи модели и нажимаю сохранить, программа сообщает мне, что я использую неправильный формат даты.
Рекомендую прочитать DateField в документации Django.
Поле всегда принимает строки в формате дат ISO 8601 или распознаваемые функцией parse_datetime()
Вероятно, в итоге вы создадите локализацию, которая позволит отображать ее в заданном формате. Проверьте это.
Примечание: Локализация может позволить вам отобразить поле только в пользовательском формате. Для самого поля (в модели) вы можете определить любой распознанный формат.