我正在django中创建一个待办应用程序,在更新任务时,我想用以前的数据自动填充字段。我搞砸了哪里?你知道吗
这是我的视图.py对于相同:-你知道吗
task = get_object_or_404(ToDoList, id=id)
if request.method == "POST":
form = UpdateTaskForm(request.POST)
if form.is_valid():
task.description = form.cleaned_data['description']
task.save()
form.save()
return redirect(reverse('list'))
else:
form = UpdateTaskForm(instance=task)
context = {
'form':form,
'task':task,
}
return render(request, 'TaskList/update.html', context)
这是我的表单.py:-
class Meta:
model = ToDoList
fields = ['title', 'description', 'due_date', 'completed']
这是我的模板文件:-你知道吗
{% load crispy_forms_tags %}
{% block title %} Updating task {% endblock %}
{% block content %}
<form method="post">
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-success" value="Submit"> Save </button>
</form>
{% endblock %}
这是我的型号.py:-
from django.utils import timezone
# Create your models here.
class ToDoList(models.Model):
title = models.CharField(max_length=120)
description = models.TextField(help_text='Explain your task!', blank=True)
created_date = models.DateTimeField(default=timezone.now())
due_date = models.DateTimeField(default=timezone.now())
completed = models.BooleanField(default=False)
#Author foreign key
def __str__(self):
return self.title
如果要更新实例,还必须在POST方法中传递相同的实例,因此
if request.method == "POST":
添加form = UpdateTaskForm(request.POST,instance=task)
我猜您使用的是crispy表单,因此根据这个问题here他们使用
{% crispy form %}
来呈现表单,而不是您使用{{ form|crispy }}
的方式,也许这就是问题所在。你知道吗相关问题 更多 >
编程相关推荐