我的模型B具有模型A作为PK。在这个问题上,我正在创建模型A。 在我的表单清洁方法中,我执行了以下代码。我收到一个错误: “禁止使用save()来防止由于未保存的相关对象'transac'而导致数据丢失。”
我知道这可能是因为我要保存2个Transac实例。 1来自表单本身,另一个来自clean方法。但是我不知道正确的方法...
def clean(self):
from Ticketing.models import Ticket,Transaction
cleaned_data = super(TransactionForm, self).clean()
computerid = cleaned_data.get('id_comp')
newticket = Ticket(transac=Transaction(id_comp=computerid))
newticket.save()
return self.cleaned_data
答案 0 :(得分:0)
首先,您不应该在clean()
中这样做。调用它来检查表单是否有效,因此即使表单无效,您也将创建工单。代码需要进入save方法或视图本身。
第二,您需要使用由表单保存创建的Transaction实例,而不是实例化一个新实例(如错误所示,未保存实例)。
因此,假设您在视图中执行了此操作:
if form.is_valid():
transac = form.save()
newticket = Ticket(transac=transac)
newticket.save()
return redirect('wherever')