gpt4 book ai didi

Django ModelForm is_valid自动保存实例

转载 作者:行者123 更新时间:2023-12-04 10:27:18 26 4
gpt4 key购买 nike

我发现Django中的ModelForm非常易于使用,并且节省了大量开发时间。

但是,当我意识到is_valid实际上保存了ModelForm时,我陷入了困境!我想知道这是否是预期的行为,还是我做错了什么?

我发生了什么事

    form=SOME_MODEL_FORM(...., instance=cafe)
print cafe.name # "CAFE OLD NAME"
if request.method="POST":
if form.is_valid():
### HERE the cafe instance has been changed
print cafe.name # "CAFE NEW NAME"

我使用post_save进行调试,is_valid确实保存了模型!

我当前的解决方法是在调用is_valid之前将模型保存在另一个对象中,然后再保存以覆盖更改。这确实是黑客事件,我想有一种更优雅的方法来实现相同的目标(在is_valid调用后不保存模型)。

谢谢!

最佳答案

No form.is_valid()不会在数据库中保存新数据。但是,它将使用新属性更新实例对象,以便在调用form.save()时可以使用它们。

这是您可以验证的方法:

>>> mc = MyModel.objects.get(id=3)
>>> mf=MyModelForm({'name': 'abcd'}, instance=mc)
>>> mc.name
u'oldName'
>>> mf.is_valid()
True
>>> mc.name
u'abcd'
>>> mc2 = MyModel.objects.get(id=3) #get the new instance from DB
>>> mc2.name
u'OldName'
>>>

关于Django ModelForm is_valid自动保存实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12310775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com