Django:从Form中获取Model实例而不保存

26 django django-forms

假设我有一个django ModelForm,我想在保存前编辑它.

例如,

而不是这个

model_instance = form.save()
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情

model_instance = form.get_model()
model_instance.edit() #say add a new field which is not available on form
model_instance.save()
Run Code Online (Sandbox Code Playgroud)

Ash*_*hok 37

model_instance = form.save(commit=False)
Run Code Online (Sandbox Code Playgroud)

将返回模型的对象而不保存到DB

然后,您可以添加某些字段的值,这些字段在表单上不可用

model_instance.some_field = value
model_instance.save()
Run Code Online (Sandbox Code Playgroud)

  • 如果你使用`form.save(commit = False)`,django将不会保存ManyToMany关系.在自己保存实例后,必须调用`form.save_m2m()`.[Django ModelForms#Save](https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method) (4认同)
  • 谢谢.令我感到困惑的是我想引用form.instance,但只有在调用save()之后才能使用它. (3认同)

laf*_*ste 6

也:

model_instance = form.instance
# edit
model_instance.save()
Run Code Online (Sandbox Code Playgroud)