从视图中使用Django保存表单

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从视图中使用Django保存表单相关的知识,希望对你有一定的参考价值。

我需要从我的观点中保存一个带有Django的表单。我从API获取数据并需要直接保存在我的数据库中:

form = NewSubject()
#API request
form.owner = request.user
#Another fields
form.teacher = teacher
form.group = request.user.group
form.save()

但我得到:

异常值:NOT NULL约束失败:subjects_subject.owner_id

所以我尝试了另一种方式:

form = NewSubject()
#API request   
subject = form.save(commit=False)
subject.owner = request.user
#Another fields
subject.teacher = teacher
subject.group = request.user.group
form.save()

现在,表单已保存,但我总是收到错误:

异常值:'NewSubject'对象没有属性'cleaning_data'

答案

如果要将数据保存到Django视图中的表单,则需要在表单上发送字典,然后使用is_valid()方法验证此数据:

form = NewSubject({
    'owner': request.user.id,
    #Another fields
    'teacher': teacher,
    'group': request.user.group
})
if form.is_valid():
    form.save()

以上是关于从视图中使用Django保存表单的主要内容,如果未能解决你的问题,请参考以下文章

在Django中将计算值从视图保存到模型

django表单提交后如何用弹框提示成功?

我的视图没有从 Django 中的 Form 中保存实例

使用 Django 从数据库预填充 HTML 表单表

Django Forms - 保存后重定向

Django DateTimeField 从表单到 UTC