【发布时间】:2015-05-04 22:01:10
【问题描述】:
我正在尝试创建一个页面,我可以在其中以经过身份验证的用户身份编辑我的文章,但是当 form.save() 被调用时,没有任何内容被保存。
这是代码
views.py
@login_required
def edit(request, id=None, template_name='article_edit.html'):
if id:
article = get_object_or_404(Article, pk=id)
if article.user != request.user:
return HttpResponseForbidden()
else:
article = Article(user=request.user)
if request.POST:
form = ArticleForm(request.POST, instance=article)
if form.is_valid():
save_it = form.save(commit=False)
save_it.save()
form.save_m2m()
return HttpResponseRedirect("/")
else:
form = ArticleForm(instance=article)
context = {'form': form}
populateContext(request, context)
return render(request, template_name, context)
models.py
class Article(models.Model):
user = models.ForeignKey(User)
titre = models.CharField(max_length=100, unique=True)
summary = RichTextField(null=True, max_length=140)
contenu = RichTextField(null=True)
def __str__(self):
return self.titre
forms.py
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
exclude = ['user']
form = ArticleForm()
出了什么问题,为什么 form.save() 没有保存?任何帮助都会有所帮助。
【问题讨论】:
-
您在发布表单时看到的任何错误?
-
它做了什么而不是保存?它只是重定向而不做任何事情吗?
-
您应该保存 Model 而不是 Form。这是 Django Forms 的常见错误。
-
form.save(commit=False)生成的模型实例是否设置了user字段?我想可能会因为它被排除在表格之外而引起问题。