I have a model repairOrders with 2 manytomany fields:
class RepairOrder(models.Model):
>>>
labor = models.ManyToManyField(Labor)
parts = models.ManyToManyField(Parts)
I have the repairOrder displayed and have a button to create a new labor object by using the Labor modelForm. what I want to happen is after I create that obj I want it added to the manytomany field of the RepairOrder. how do I define that in the view?
this is what I have now:
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})
Right now I can create as many labor obj as I want but they are not added to the repairOrder model. I don't know what I need to call to save the labor instance to the repairOrder.labor field. I would like for this all to happen in one step for the end user.
You should get the RepairOrder
instance first, not in the else statement. Then you can add Labor
objects to it.
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})