我有一个django编辑表单,其中有许多来自模型的字段,其中包括一些日期字段,为了获得合适的格式,我使用了DateInput小部件。不幸的是,当我们编辑对象时,除了日期之外,所有其他字段都已经填充了现有数据。日期处于初始状态(dd/mm/yyyy),由于它们是必需的,因此用户每次要编辑对象时都必须重新输入日期,即使他们不想更改日期也是如此。
有没有人知道如何在这些日期字段中预先填充日期数据?
forms.py:
class DateInput(forms.DateInput):
input_type = 'date'
input_formats = ('%d-%m-%Y')
[...]
date_sinistre = forms.DateField(widget=DateInput, label='Date sinistre')
date_effet = forms.DateField(widget=DateInput, label='Date effet')
date_echeance = forms.DateField(widget=DateInput, label='Date échéance')edit_object.html:
<div class='row border border-primary rounded m-1 border-3'>
<div class='col-md-4 p-0 pl-2 pr-2 justify-content-center align-self-center'>
<strong>DATE DE SINISTRE:</strong>
</div>
<div class='col-md-8 p-0 pl-2 pr-0 justify-content-center align-self-center'>
{{ dossierForm.date_sinistre|as_crispy_field }}
</div>
</div>
<div class='row border border-primary rounded m-1 border-3'>
<div class='col-md-4 p-0 pl-2 pr-2 justify-content-center align-self-center'>
<strong>DATE EFFET:</strong>
</div>
<div class='col-md-8 p-0 pl-2 pr-0 justify-content-center align-self-center'>
{{ dossierForm.date_effet|as_crispy_field }}
</div>
</div>
<div class='row border border-primary rounded m-1 border-3'>
<div class='col-md-4 p-0 pl-2 pr-2 justify-content-center align-self-center'>
<strong>DATE ÉCHÉANCE:</strong>
</div>
<div class='col-md-8 p-0 pl-2 pr-0 justify-content-center align-self-center'>
{{ dossierForm.date_echeance|as_crispy_field }}
</div>
</div>PS:尽管我将格式指定为dd-mm-yy,但小部件仍然将日期显示为MM-DD-YYYY。
截图:

发布于 2020-04-07 22:10:50
您的DateInput生成元素<input type = "date">,但这种元素使用'%Y-%m-%d'格式。
实际上,检查一个正确的HTML元素,应该是这样的:
<input type="date" name="date" value="2020-04-07" id="id_date">由于您传递的是另一种格式的日期,初始值将被忽略。
下面的方法应该是可行的
class DateInput(forms.DateInput):
input_type = 'date'
input_formats = ('%Y-%m-%d')
[...]
date_sinistre = forms.DateField(widget=DateInput, label='Date sinistre')
date_effet = forms.DateField(widget=DateInput, label='Date effet')
date_echeance = forms.DateField(widget=DateInput, label='Date échéance')https://stackoverflow.com/questions/60130151
复制相似问题