【问题标题】:Django 1.11 - ModelForm: change default form widget for DateTimeFieldDjango 1.11 - ModelForm:更改 DateTimeField 的默认表单小部件
【发布时间】:2018-03-25 00:13:21
【问题描述】:

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

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

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

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

widgets = {
            'missing_date': DateInput()
        }

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

谁能进一步阐明上述解决方案以及为什么它可能对我不起作用?

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

【问题讨论】:

    标签: django forms model datepicker


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-01-29
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 2020-12-04
      • 2011-04-10
      • 2015-04-14
      • 1970-01-01
      相关资源
      最近更新 更多