我遇到了无法保存到日期库的表单问题。
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是否有问题?
答案 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
中查看验证错误。