在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