创建Django模型时,它会发布数据,但不会将其保存在数据库中

时间:2018-12-19 12:48:25

标签: python django django-forms django-views

我可以通过管理面板创建模型对象。但我希望在网站上创建它。下面的代码使我可以输入模型的值,并在提交模型时将其重定向到书面的url,该URL发生在form.save之后。这是来自服务器"POST /taskcreate HTTP/1.1" 302 0的消息。但是数据库没有任何变化。如何解决这个问题?有什么想法...谢谢

models.py

class Task(models.Model):
    name = models.CharField(max_length=200)
    description = models.CharField(max_length=1000)
    pub_date = models.DateTimeField('date_published', auto_now_add = True)
    cost = models.IntegerField()
    def __str__(self):
        return '%s' % (self.name)

forms.py

class TaskCreateForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = ('name', 'description', 'cost')

views.py

def TaskCreateView(request):
    if request.method == 'POST':
        form = TaskCreateForm(request.POST)
        if form.is_valid():
            form.save
            return redirect('home')
    else:
        form = TaskCreateForm()
    return render(request, 'employer/create_task.html')

2 个答案:

答案 0 :(得分:1)

您实际上并没有调用保存方​​法。

if form.is_valid():
    form.save()
    return redirect('home')

答案 1 :(得分:0)

使用 ModelForm 时,您只需要在form.save()之后编写if is_valid()方法即可。您的情况是,保存后缺少弯曲括号

def TaskCreateView(request):
    if request.method == 'POST':
        form = TaskCreateForm(request.POST)
        if form.is_valid():
            form.save() # here you were missing curly brackets
            return redirect('home')
    else:
        form = TaskCreateForm()
    return render(request, 'employer/create_task.html')