Формат ввода даты в 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). К сожалению, он всегда выглядит так:

Dateformat on the page

И что еще хуже, если я редактирую описание записи модели и нажимаю сохранить, программа сообщает мне, что я использую неправильный формат даты.

Рекомендую прочитать DateField в документации Django.

Поле всегда принимает строки в формате дат ISO 8601 или распознаваемые функцией parse_datetime()

Вероятно, в итоге вы создадите локализацию, которая позволит отображать ее в заданном формате. Проверьте это.

Примечание: Локализация может позволить вам отобразить поле только в пользовательском формате. Для самого поля (в модели) вы можете определить любой распознанный формат.

Вернуться на верх