当我进入更新页面时,
除日期输入(截止日期和提醒)外,所有先前的值都会显示。
我该如何修复它?
起初,我没有将 TaskCreationForm 用于 TaskUpdateView,因为考虑到 django 会自动处理它,但后来日期输入变成了普通的文本输入,因此单击文本框时不会出现日期选择器。
我认为它适用于我使用过的小部件,因此我决定使用 TaskCreationForm 进行创建和更新。
模型.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'