ジャンゴでは、次のようなことをしようとしています:
# if form is valid ...
article = form.save(commit=False)
article.author = req.user
product_name = form.cleaned_data['product_name']
try:
article.product = Component.objects.get(name=product_name)
except:
article.product = Component(name=product_name)
article.save()
# do some more form processing ...
しかし、それは私に言います:
列 "product_id" の null 値が not-null 制約に違反しています
しかし、なぜこれが問題なのかわかりません。が呼び出されると、製品を作成(および ID を生成)article.save()
できるはずです。
except
ブロックで次のコードを使用することで、この問題を回避できます。
product = Component(name=product_name)
product.save()
article.product = product
しかし、これが私が懸念する理由は、article.save()
失敗した場合、新しいコンポーネント/製品が既に作成されているためです。一緒に成功したり失敗したりしてほしい。
これを回避する良い方法はありますか?