Поле даты не отображает значение по умолчанию

Я попробовал использовать DateField и показать значение по умолчанию, но оно не отображается на странице (но в HTML):

class foo(models.Model):
    date = models.DateField()

class FooForm(ModelForm):
    class Meta:
        model = Foo
        fields = "__all__"
        widgets = {"date": DateInput(format=("%d-%m-%Y"), attrs={"class": "form-control", "value": timezone.now().strftime("%d-%m-%Y"), "type": "date"}),}

это производит:

<input type="date" name="date" value="29-02-2024" class="input" prod_date="input" required="" id="id_date">

, который отображается как:

enter image description here

Но не с текущей датой в качестве плацдарма.

Формат виджета - YYYY-MM-DD, так что 2024-02-29 в данном случае. При этом не задавайте значение через атрибуты виджета: одна из задач формы (поля) - преобразование значений Python в соответствующее значение виджета, так что по сути вы дублируете шаблонную логику, и, как вы сами выяснили, это преобразование часто бывает довольно сложным:

from datetime import date


class Foo(models.Model):
    date = models.DateField(default=date.today)


class FooForm(ModelForm):
    class Meta:
        model = Foo
        fields = '__all__'
        widgets = {
            'date': DateInput(
                format=('%d-%m-%Y'),
                attrs={'class': 'form-control', 'type': 'date'},
            ),
        }
Вернуться на верх