Django 1.11 - ModelForm:更改DateTimeField

时间:2017-10-12 22:56:07

标签: django forms model datepicker

我需要一些帮助,在我显示的默认文本字段的表单中呈现日期时间选择器。我正在使用Django 1.11,并遵循最近发布的解决方案:Django 1.11 - forms.Models: change default form widget for DateTimeField但是

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

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

我收到的第三个错误是:NameError:名称'Date_Input'未定义我可以通过将上面的最后一段代码(删除Date_Input中的下划线)更改为:

来传递此错误
widgets = {
            'missing_date': DateInput()
        }

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

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

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

1 个答案:

答案 0 :(得分:0)

我最终通过将日期时间分成日期和时间的单独字段并使用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(),
    }