Я успешно сменил конкретное поле net
в моем объекте на основе количества qty
со следующим кодом.Как сохранить другие данные после действия form_valid в django UpdateView?
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)
Однако, я также пытаюсь изменить данные в модели ANOTHER. Если быть точным, я хочу суммировать все значения net
запроса и обновить поле subtotal
в другой таблице.
Обратите внимание на прокомментированные строки под номером def form_valid
. У меня нет путаницы в том, что эти строки работают, но мне нужно, чтобы они исполнялись ПОСЛЕ сохранения текущей модели, поскольку они зависят от значения текущей модели.
Не найдено ошибок, кроме этого поле subtotal
в модели ANOTHER ДОПОЛНИТЕЛЬНО net
поле в текущей модели сохраняется. Таким образом, сумма является неправильным ответом.
Что я делаю неправильно?
К сожалению, немного не ясно мне: почему разве вы не сохраните другую модель, прежде чем сохранить ее? – Wtower
@Wtower, потому что данные другой модели являются результатом данных этой модели. Таким образом, другая модель будет содержать неправильные данные, если она будет сохранена в первую очередь. – MiniGunnR