Django 1.11 - ModelForm:更改DateTimeField的默认表单窗口小部件

问题描述:

我需要一些帮助,以显示默认文本字段的形式insead中的日期时间选择器。我使用的是Django 1.11,并且遵循了最近在此发布的解决方案:Django 1.11 - forms.Models: change default form widget for DateTimeField但是Django 1.11 - ModelForm:更改DateTimeField的默认表单窗口小部件

我在使用相同的代码时收到错误。 我收到的第一个错误是:无法导入名称'小部件'。我可以通过导入“小部件”来传递此错误。这个已经改名了吗?

重命名为小部件后,我收到的第二个错误是NameError:名称'forms'未定义。我可以通过更改代码来传递此错误: Class DateInput(widgets.DateInput): 这是错误的正确处理方法吗?

我接收第三误差是:NameError:名称“Date_Input”没有定义我可以通过改变的代码的最后一块通过此错误(在Date_Input删除下划线)以上:

widgets = { 
      'missing_date': DateInput() 
     } 

这些后更改,我不再有任何错误,但我的表单中的日期字段仍然呈现为文本字段而不是日期选择器。

任何人都可以进一步阐明上述解决方案,为什么它可能不适合我?

此外,我想修改上述链接中提到的解决方案,以使datetime选取器不仅仅是日期选取器,但我首先想要使用之前的解决方案中的代码来测试功能。谢谢!

我最终通过分割成日期时间日期和时间的单独的领域和forms.py使用下面的代码解决这个:

class TimeInput(forms.TimeInput): 
    input_type = 'time' 

class DateInput(forms.DateInput): 
    input_type = 'date' 

和我的ModelForm类中:

widgets = { 
     'start_date': DateInput(), 
     'start_time': TimeInput(), 
     'end_date': DateInput(), 
     'end_time': TimeInput(), 
    }