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 呼び出しの後にモデルを保存しないでください)。
ありがとう!