【发布时间】:2011-11-17 16:47:37
【问题描述】:
如果我有一个模型表单并将其保存为:
f = FormModel(request.POST)
if f.is_valid():
f.save()
如何取回刚刚保存的对象?
【问题讨论】:
标签: django django-forms
如果我有一个模型表单并将其保存为:
f = FormModel(request.POST)
if f.is_valid():
f.save()
如何取回刚刚保存的对象?
【问题讨论】:
标签: django django-forms
当您保存模型表单时,它会返回已保存的模型实例。所以你所要做的就是将它分配给一个变量:
f = MyModelForm(request.POST)
if f.is_valid():
m = f.save()
除非您要处理更复杂的数据,否则您无需搞乱commit=False 或任何类似的东西。
【讨论】:
如果您知道模型已保存(以便存在适当的实例),您也可以这样做:
model = form.instance
【讨论】:
啊,我才发现这个!
# Create a form instance with POST data.
>>> f = AuthorForm(request.POST)
# Create, but don't save the new author instance.
>>> new_author = f.save(commit=False)
# Modify the author in some way.
>>> new_author.some_field = 'some_value'
# Save the new instance.
>>> new_author.save()
# Now, save the many-to-many data for the form.
>>> f.save_m2m()
【讨论】:
@Fabian,用于编辑以前未包含在模型表单中的实例,
例如,您的模型表单包含姓名、年龄、性别,但在您的模型中还有另一个字段可能是国家/地区,您想自己添加而不是您的用户,因此您显示必填字段,然后使用上述过程添加其余的部分 这在上述问题上对我有用
If form.is_valid()
Current_form=form.save()
My_new_id=Curret_form.id
这打印了我后来保存在另一个模型中的新创建对象的 id
【讨论】: