Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Forms DateInput小部件未填充_Django_Django Forms - Fatal编程技术网

Django Forms DateInput小部件未填充

Django Forms DateInput小部件未填充,django,django-forms,Django,Django Forms,我有一个django编辑表单,它有一个模型中的许多字段,包括一些日期字段。为了获得合适的格式,我使用了一个DateInput小部件。不幸的是,当我们编辑对象时,所有其他字段都已经填充了现有数据,但日期除外。日期处于初始状态(dd/mm/yyyy),并且由于它们是必需的,因此用户每次想要编辑对象时都必须重新输入日期,即使他们不想更改日期 有人知道如何在这些日期字段中预填充日期数据吗 forms.py: class DateInput(forms.DateInput): input

我有一个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')
编辑_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>

西尼斯特日期:
{{文件格式:日期|如|脆|田}
日期影响:
{{档案格式日期{124AS{U crispy{U field}}
日期:日期:
{{档案格式日期|作为|脆|字段}
PS:虽然我将格式指定为dd-mm-yy,但小部件仍然将日期显示为mm-dd-yyy


屏幕截图:

根据的源代码,您需要为构造函数指定:

因此,您可以通过以下方式实现这一点:

    # …
    date_sinistre = forms.DateField(widget=forms.DateInput(format='%d-%m-%Y'), label='Date sinistre')
    date_effet = forms.DateField(widget=forms.DateInput(format='%d-%m-%Y'), label='Date effet')
    date_echeance = forms.DateField(widget=forms.DateInput(format='%d-%m-%Y'), label='Date échéance')
#…
date\u sinistre=forms.DateField(widget=forms.DateInput(格式=“%d-%m-%Y”),label='date sinistre')
date\u effet=forms.DateField(widget=forms.DateInput(格式=“%d-%m-%Y”),label='date effet')
date\u echeance=forms.DateField(widget=forms.DateInput(格式=“%d-%m-%Y”),label='dateéchéance')

此外,您可能应该更改并添加
'%d-%m-%Y'
格式作为可接受的格式之一。

您的DateInput生成元素
,但这种元素与格式
'%Y-%m-%d'
一起工作

事实上,检查一个正确的HTML元素时,应该是这样的:

<input type="date" name="date" value="2020-04-07" id="id_date">

你不应该把
input\u formats
实现为一个元组吗,所以
input\u formats=(“%d-%m-%Y)”
(用逗号)?我如何定义TextInput?来自django.forms.widgets?@KaissBouali:你不需要定义它们,我只是指的是django本身的源代码。@KaissBouali:再次,您不需要定义
DateTimeBaseInput
,也不需要定义
DateInput
。我们在这里使用的
DateInput
是来自
django.forms
的表单,但仍然无法正常工作。我尝试了你上面所说的一切,datepicket小部件消失了,只有日期显示为文本字段。我还尝试了tempus_dominus小部件,但还是没有任何变化。
<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')