django 更新视图不​​显示日期输入(以前的)值

django update view not showing date input (previous) values

当我进入更新页面时, 除日期输入(截止日期和提醒)外,所有以前的值都会显示。
我该如何解决?

起初我没有为 TaskUpdateView 使用 TaskCreationForm,因为考虑到 django 会自动处理它,但后来日期输入变成了普通的文本输入,因此在单击文本框时不会出现日期选择器。
我以为这是我用过的小部件,所以我决定使用 TaskCreationForm 来创建和更新。

models.py

class Task(models.Model):
    deadline_date = models.DateTimeField(verbose_name='Deadline')
    status = models.BooleanField(verbose_name='Task Status', default=False)
    reminder = models.DateTimeField(verbose_name='reminder')
    class Meta:
        verbose_name_plural = 'Tasks'
        ordering = ('-deadline_date',)
        db_table = 'task'

forms.py

class DateInput(forms.DateInput):
    input_type = 'datetime-local'


class TaskCreationForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = ('title', 'deadline_date', 'description', 'reminder')
        labels = {
            'reminder': 'remind me'
        }

        widgets = {
            'deadline_date': DateInput(),
            'reminder': DateInput(),
            'description': forms.Textarea(attrs={'cols': 80, 'rows': 5})
        }

views.py

class TaskCreateView(CreateView):
    model = Task
    form_class = TaskCreationForm
    template_name = 'mysite/add_task.html'
    success_url = reverse_lazy('mysite:home')

    def post(self, request, *args, **kwargs):
        task_form = TaskCreationForm(request.POST)
        if task_form.is_valid():
            cd = task_form.cleaned_data
            current_user = request.user
            task = Task(title=cd['title'], description=cd['description'],
                        user=current_user, deadline_date=cd['deadline_date'],
                        reminder=cd['reminder']
                        )
            task.save()
        return redirect('mysite:home')


class TaskUpdateView(UpdateView):
    model = Task
    form_class = TaskCreationForm
    # fields = ('title', 'deadline_date', 'reminder', 'status', 'description',)
    template_name = 'mysite/edit_task.html'

经过数周的搜索和努力,我发现为了显示之前的日期,我必须将特定格式的日期发送到 Django 模板:“year-month-dayThour:minute” 例如:“2018-06-12T07:30”。但默认情况下,Django 以另一种格式将日期发送到模板(在给定的示例中:2018 年 6 月 11 日,7:30 a.m。) 所以为了解决这个问题,我使用了Django date filter
我将值更改为:value="{{form.deadline_date.value | date:'c'}}"(在模板中)