form.save()不保存

时间:2011-06-03 23:12:35

标签: python django django-forms

出于某种原因,我无法将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

模板/ addTHEtask.html。这被正确引用。

    <form action="/todo/" method="post">
    {{ form.as_p }}
    <input type="submit" value="Add Task" />
    </form>

添加/ 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 个答案:

答案 0 :(得分: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之外,您的代码(大多数)看起来是正确的。添加令牌并显示任何错误,应该会显示出错的地方。