我可以通过管理面板创建模型对象。但我希望在网站上创建它。下面的代码使我可以输入模型的值,并在提交模型时将其重定向到书面的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')
答案 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')