为什么我们在Django视图中使用form.save(commit = False)?

时间:2019-04-24 04:57:55

标签: django django-views

我无法理解为什么我们使用form.save(commit=False)而不是简单地在form.save中使用Django-views的原因。有人可以解释一下两者的区别和必要性吗?

1 个答案:

答案 0 :(得分:0)

如果使用ModelForm,通常会使用

FROM python:3.6 ENV PYTHONPATH /root/files # install the 'cx_Oracle' module RUN apt-get -y update && python3 -m pip install cx_Oracle --upgrade WORKDIR ./ COPY myfile.py ./ CMD [ "python3", "myfile.py" ] 。 主要用例是,如果您的ModelForm不包含模型的所有必填字段。

您需要将此表单保存在数据库中,但是由于您没有提供所有必填字段,因此会出现错误。

因此解决方案将是使用commit = False保存表单,然后您可以手动定义所需的值,然后调用常规保存。

主要区别是commit = False不会将更改推送到数据库中,但是会创建它所需的所有结构,但是稍后您将不得不触发常规保存,否则您的表单将不会保存在数据库。

例如:

form.save(commit=False)

另一个示例是您要手动处理多对多关系。

示例列表很长,但要简短一些,这是您在将模型保存到数据库之前需要执行中间步骤的时候。