我已net根据数量qty字段使用以下代码成功更改了对象中的特定字段.
class OrderDetailsProductEdit(UpdateView):
model = OrdersPlaced
fields = ['qty']
template_name = 'backend/order-details-product-edit.html'
success_url = '../../../'
def form_valid(self, form):
form.instance.net = form.instance.qty * form.instance.price
# order = Order.objects.get(pk=self.kwargs['order_id'])
# subtotal = OrdersPlaced.objects.filter(order=order).aggregate(Sum('net'))['net__sum']
# order.subtotal = subtotal
# order.save()
return super(OrderDetailsProductEdit, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)
但是,我也试图改变另一个模型中的数据.确切地说,我想要net查询所有值的总和并更新subtotal另一个表中的字段.
请注意下面注释掉的行def form_valid.我没有混淆这些线的工作,但我需要它们在保存当前模型后执行,因为它们取决于当前模型的值.
除了subtotal在net保存当前模型中的字段之前计算ANOTHER模型中的字段之外,我没有发现任何错误.因此,总数是错误的答案.
我究竟做错了什么?
小智 9
只需在调用super后移动指令即可
def form_valid(self, form):
form.instance.net = form.instance.qty * form.instance.price
redirect_url = super(OrderDetailsProductEdit, self).form_valid(form)
order = Order.objects.get(pk=self.kwargs['order_id'])
subtotal = OrdersPlaced.objects.filter(order=order).aggregate(Sum('net'))['net__sum']
order.subtotal = subtotal
order.save()
return redirect_url
Run Code Online (Sandbox Code Playgroud)
或者只是自己做一些调用super(保存模型和重定向success_url)
def form_valid(self, form):
form.instance.net = form.instance.qty * form.instance.price
self.object = form.save()
order = Order.objects.get(pk=self.kwargs['order_id'])
subtotal = OrdersPlaced.objects.filter(order=order).aggregate(Sum('net'))['net__sum']
order.subtotal = subtotal
order.save()
return HttpResponseRedirect(self.get_success_url())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5327 次 |
| 最近记录: |