在模型 django 中保存表单
Posted
技术标签:
【中文标题】在模型 django 中保存表单【英文标题】:Save form in model django 【发布时间】:2015-08-27 22:38:06 【问题描述】:我试图在 Django 上的模型中保存表单的数据,但是当我提交表单并看到 Django 管理页面时,有任何更改。
forms.py:
class PublisherForm(ModelForm):
class Meta:
model = Publisher
fields = ['name','address','city','state_province','country','website']
form = PublisherForm #Creating a form to add a Publisher
这是我的观点.py
def add_publisher(request):
if request.method == 'POST':
form = PublisherForm(request.POST)
if form.is_valid():
new_publisher=form.save()
return HttpResponseRedirect('/thanks/')
else:
print form.errors
else:
form = PublisherForm()
return render_to_response('add_publisher.html', 'form':form)
还有我的models.py:
class Publisher(models.Model):
name = models.CharField(max_length = 30)
address = models.CharField(max_length = 50)
city = models.CharField(max_length = 60)
state_province = models.CharField(max_length = 30)
country = models.CharField(max_length = 50)
website = models.URLField()
def __str__(self):
return self.name
有人可以帮帮我吗?
【问题讨论】:
请编辑您的问题并修正缩进。目前很难说问题出在哪里。在if form.is_valid():
之后,尝试将print form.errors
放在else
块中——这可能会告诉你问题出在哪里。
@Alasdair 抱歉,我只是更正了缩进。我添加了您向我建议的 else 块,但页面没有返回任何错误。谢谢
我很惊讶您在提交发布请求时没有收到 CSRF 表单。我建议将视图的最后一行更改为return render(request, 'add_publisher.html', 'form':form)
(您需要添加导入)。
确保你的表单有method="post"
。您可以将您的模板添加到问题中吗?
@Alasdair 刚刚解决了我的问题。问题是它没有正确填写表单,因为它在 URLField 字段 () 上输入了一封电子邮件。我不明白,因为我没有在页面上抛出错误。虽然我可以在控制台上看到。感谢您的帮助。
【参考方案1】:
offtopic,但这是使用表单更简单的方式。
def add_publisher(request):
form = PublisherForm(request.POST or None)
if request.method == 'POST' and form.is_valid():
new_publisher = form.save()
return HttpResponseRedirect('/thanks/')
return render_to_response('add_publisher.html', 'form':form)
【讨论】:
以上是关于在模型 django 中保存表单的主要内容,如果未能解决你的问题,请参考以下文章
如何在javascript中获取django表单值而不将其保存到模型中
Django With MSSQL using Pyodbc:未保存模型表单