form.save() 不保存
出于某种原因,我无法让form.save()将数据保存到我的数据库中。我可以创建表单,并且能够将表单传递给我的模板,但就是没有任何数据被保存到数据库里。我已经折腾了很多个小时,还是没能让它正常工作。
任何帮助都非常感谢。
以下是相关的代码……
这是我的 add/model.py
from django.db import models
from django.forms import ModelForm
class addTask(models.Model):
task = models.CharField('Task', max_length=60)
taskNotes = models.CharField('Notes', max_length=600)
def __unicode__(self):
return self.task
class addTaskForm(ModelForm):
class Meta:
model = addTask
template/addTHEtask.html。这个引用是正确的。
<form action="/todo/" method="post">
{{ form.as_p }}
<input type="submit" value="Add Task" />
</form>
add/views.py
from django.shortcuts import render_to_response
from django.template import RequestContext
from myToDo.add.models import addTask, addTaskForm
def create_task(request):
if request.method == 'POST':
form = addTaskForm(request.POST)
if form.is_valid():
form.save()
else:
form = addTaskForm()
return render_to_response('addTHEtask.html', {'form': form})
1 个回答
1
为了更好地调试你的代码,先把你的模板改成:
<form action="/todo/" method="post"> {{ csrf_token }}
{{ form.errors }}
{{ form.as_p }}
<input type="submit" value="Add Task" />
</form>
然后把你的视图改成:
def create_task(request):
if request.method == 'POST':
form = addTaskForm(request.POST)
if form.is_valid():
form.save()
else:
form = addTaskForm()
return render_to_response(
'addTHEtask.html',
{'form': form},
context_instance=RequestContext(request))
我觉得context_instance对你来说没什么特别的作用,但在使用render_to_response的时候,通常传递它是个好主意。
在表单中显示错误信息可能会帮助你找到实际的问题所在。你的代码看起来(大部分)是正确的,唯一缺少的是csrf_token。添加这个令牌,并显示任何错误信息,应该能让你看到问题出在哪里。