如何在更新Django表单时自动填充字段?

2024-04-25 20:17:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在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

Tags: djangopyformiddefaulttaskdatereturn
1条回答
网友
1楼 · 发布于 2024-04-25 20:17:54

如果要更新实例,还必须在POST方法中传递相同的实例,因此

if request.method == "POST":添加form = UpdateTaskForm(request.POST,instance=task)

我猜您使用的是crispy表单,因此根据这个问题here他们使用{% crispy form %}来呈现表单,而不是您使用{{ form|crispy }}的方式,也许这就是问题所在。你知道吗

相关问题 更多 >