【问题标题】:Django model form.save() not savingDjango模型form.save()不保存
【发布时间】: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 字段?我想可能会因为它被排除在表格之外而引起问题。

标签: python django forms


【解决方案1】:

试试 form.save(commit= True),可能有用

【讨论】:

    【解决方案2】:

    您应该保存Model 而不是Form。这是 Django Forms 的常见错误

    【讨论】:

    • 它是一个模型表单,所以保存一个表单对象是完全有效的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2015-03-11
    • 1970-01-01
    • 2021-01-27
    • 2013-08-02
    • 2013-06-26
    相关资源
    最近更新 更多