Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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中,将小部件设置为DateInput时,预填充DateField不起作用_Django_Django Forms - Fatal编程技术网

在Django中,将小部件设置为DateInput时,预填充DateField不起作用

在Django中,将小部件设置为DateInput时,预填充DateField不起作用,django,django-forms,Django,Django Forms,我希望在表单字段中预先填充特定日期 我有一个CreateView: class CreateEventView(CreateView): model = Event template_name = 'events/form.html' form_class = EventForm def get_initial(self): initial = super(CreateEventView, self).get_initial()

我希望在表单字段中预先填充特定日期

我有一个CreateView:

class CreateEventView(CreateView):
    model = Event
    template_name = 'events/form.html'
    form_class = EventForm

    def get_initial(self):
        initial = super(CreateEventView, self).get_initial()
        initial['start_date'] = datetime.date(day=2,month=11,year=2018)
        return initial
如果使用此ModelForm,它会在文本字段中显示预填充的日期(如预期的那样):

但我希望使用一个不错的日期选择器小部件。但是,预填充不再起作用:

class EventForm(ModelForm):
    start_date = DateField(widget=DateInput(attrs={'type': 'date'}))
    # ...

为什么会这样?我能做些什么?这种行为有没有记录在案?

在Django这不是问题。HTML数据输入需要格式为
YYYY-MM-DD
的默认值。确保它是以该格式的日期值呈现的。我怀疑现在它可能呈现为:

<input type='date' name='date' value='22-02-2018'/>

但你想要的是:

<input type='date' name='date' value='2018-02-22'/>

看这个演示


您需要在后端将日期值正确格式化为字符串,或者在渲染后执行一些js魔术。

我需要向小部件添加如下格式:

class EventForm(ModelForm):
    start_date = DateField(widget=DateInput(format='%Y-%m-%d', attrs={'type': 'date'}), required=False)

你能澄清一下这个代码吗?
datetime.date(day=int(day=2,month=11,year=2018))
不应该只是
datetime.date(day=2,month=11,year=2018)
?你是对的。我在简化代码时出错了。
class EventForm(ModelForm):
    start_date = DateField(widget=DateInput(format='%Y-%m-%d', attrs={'type': 'date'}), required=False)