首页 > 解决方案 > Django 没有将表单保存到数据库

问题描述

我遇到了未保存到数据库的表单的问题。

视图.py

...
@login_required
def create_task(request):
    if request.method == 'POST':
        form = CreateTaskForm(request.POST, instance=request.user)
        if form.is_valid():
            form.save()
            return redirect('index')
    else:
        form = CreateTaskForm()
        context = {'form': form}
        return render(request, 'tasks/task_form.html', context)
...

表格.py

from django import forms
from .models import Task


class CreateTaskForm(forms.ModelForm):

    class Meta:
        model = Task
        fields = (
            'name',
            'end_date',
            'description',
        )


是 create_task 视图还是 CreateTaskForm 的问题?

标签: pythondjango

解决方案


问题在于 create_task 视图:

  if request.method == 'POST':
            form = CreateTaskForm(request.POST)
            if form.is_valid():
                # if you have user in your model task make commit to false then set the user
                form.save(commit=false)
                form.user = request.user
                #if not save directly you form
                form.save()
                return redirect('index')

然后检查您的网址是否为:

path('create_task', create_task, name="create_task")

推荐阅读