【问题标题】:Get date selection widget in generic form view django在通用表单视图 django 中获取日期选择小部件
【发布时间】:2018-09-09 07:57:49
【问题描述】:

我有一个模型任务,为此我编写了以下通用表单,以便于添加新任务:

class AddTask(generic.CreateView):
    model = task
    fields = ['project','task_name','expected_date']
    success_url = reverse_lazy('home')
    template_name = 'st_web/addtask.html'

这工作得很好。唯一的问题是日期字段是文本类型字段。我阅读了类似问题的解决方案,其中一个建议在我看来编写一个日期小部件,例如:

from django import forms
........................
class DateInput(forms.DateInput):
    input_type = 'date'
.........................
.........................
class AddTask(generic.CreateView):
    model = task
    fields = ['project','task_name','expected_date']
    widgets = {
        'expected_date': DateInput()
    }
    success_url = reverse_lazy('home')
    template_name = 'st_web/addtask.html'

但是这对我不起作用。可以请任何人提出一个简单的答案(其中一些人建议添加一些 i8j.js 或类似的东西,但如果有更短的解决方案,它真的很有帮助)这个问题?谢谢。

【问题讨论】:

  • 正常选项是使用 jQuery DatePicker 插件并在模板文件中使用。并应用于特定领域,非常简单灵活。

标签: django django-models django-forms django-views django-generic-views


【解决方案1】:

在您的 forms.py 中:

from django import forms

class AddTask(forms.ModelForm):
    class Meta:
        model = task
        fields = ('project','task_name','expected_date', )
        expected_date = forms.DateField(            
        widget = forms.DateInput(
            attrs= {
                    'type':'date',
                    }
        )
        )

【讨论】:

  • 我正在使用通用创建视图创建新实例,所以我不需要编写保存实例方法以及我需要使用 forms.ModelForm 编写的所有内容,不是吗?
  • 但是您可以将通用视图更改为CreareView 并覆盖def form_valid(self, form): 方法。
  • 能否详细说明@Anup Yadav
  • 请使用CreareView 尝试上述选项以实现我相信答案应该适合您。您不需要覆盖保存功能之类的任何东西,但如果您愿意,您可以将数据处理管理到 form_valid 方法中。
  • 我在 views.py 中有我的 AddTask 类,我将建议的答案替换为 models.Form 与 generic.CreateView 但问题仍然没有得到解决@AnupYadav
猜你喜欢
  • 2022-01-26
  • 2015-09-10
  • 1970-01-01
  • 2023-03-11
  • 2019-03-02
  • 1970-01-01
  • 2019-05-12
  • 2012-11-22
  • 1970-01-01
相关资源
最近更新 更多