Django没有将表单保存到日期库

时间:2019-03-22 15:32:09

标签: python django

我遇到了无法保存到日期库的表单问题。

views.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)
...

forms.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是否有问题?

2 个答案:

答案 0 :(得分:0)

问题在于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")

答案 1 :(得分:0)

首先,由于您使用的是POST,这意味着您正在创建,因此不需要instance=request.user-用于将以前的数据与表单提供的新数据进行比较。查看您的表单,它似乎与用户无关。

第二,您没有显示或返回表单错误。因此,可能在您不知情的情况下,默默地使模型级别的验证失败。尝试添加带有表单错误的退货。

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

您可以在模板侧的form.errors中查看验证错误。