Поле даты не отображает значение по умолчанию
Я попробовал использовать 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">
, который отображается как:
Но не с текущей датой в качестве плацдарма.
Формат виджета - 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'},
),
}