在Django,我試圖做這樣的事情:爲什麼在將其添加到另一個模型之前需要保存此模型?
# 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」空值違反非空約束
但我不明白爲什麼這是一個問題。當調用article.save()
時,它應該能夠創建產品,然後(並生成一個id)。
我可以在except
塊使用此代碼解決這個問題:
product = Component(name=product_name)
product.save()
article.product = product
但是這涉及到我的理由是,因爲如果article.save()
失敗,將已經創建了一個新組件/產品。我希望他們一起成功或失敗。
有沒有一種很好的方法來解決這個問題?
注意:article.product = Component.objects.create(name = product_name)有點整齊 – michael
@michael:哦!不知道我能做到這一點。這至少有點好一點。 – mpen