如何在一个视图中创建新的多对象并将其保存到模型中

我有一个带有2个tomtomany字段的模型repairOrders:

class RepairOrder(models.Model):
    >>>
    labor = models.ManyToManyField(Labor)
    parts = models.ManyToManyField(Parts)

我显示了repairOrder,并有一个按钮,可以使用Labor modelForm创建新的人工对象。我想要发生的是在创建该obj之后,我希望将其添加到RepairOrder的manytomany字段中。如何在视图中定义它?

这就是我现在拥有的:

def repairOrder_detail(request,pk):
    if request.method == "POST":
        form = laborForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.save()
            return redirect('repairOrder_detail',pk=pk)
    else:
        repairs = get_object_or_404(RepairOrder,pk=pk)
        form = repairOrderForm()
        labor = laborForm()
    return render(request,'repairOrders/repairOrder_detail.html',{'repairs': repairs,'form': form,'labor': labor})

现在,我可以根据需要创建任意数量的人工obj,但不会将它们添加到repairOrder模型中。我不知道将人工实例保存到repairOrder.labor字段需要调用什么。我希望这一切对于最终用户都可以一步一步完成。

dongmiao008s 回答:如何在一个视图中创建新的多对象并将其保存到模型中

您应该首先获取RepairOrder实例,而不要在else语句中。然后,您可以向其中添加Labor个对象。

def repairOrder_detail(request,pk):
    form = laborForm(request.POST or None)
    form = repairOrderForm()
    repairs = get_object_or_404(RepairOrder,pk=pk)
    if request.method == "POST":
        if form.is_valid():
            post = form.save(commit=False)
            post.save()

            repairs.labor.add(post) # <- NEW

            return redirect('repairOrder_detail',pk=pk)

    return render(request,'repairOrders/repairOrder_detail.html',{'repairs': repairs,'form': form,'labor': labor})
本文链接:https://www.f2er.com/3087365.html

大家都在问