Как изменить значение связанной модели - PullRequest
1 голос
/ 30 апреля 2020

Эта строка кода выполняет итерацию по соответствующему набору запросов:

order = Order.objects.get(user=self.request.user, ordered=False)
for order_item in order.items.all():
  order_item.item.quantity += 1

Это меняет значение quantity (я вижу, что с помощью (print(order_item.item.quantity)), но не сохраняет в базы данных. Я пробовал order.save(), но значение остается прежним (до +=1). Что мне нужно сделать, чтобы сохранить новое значение в базе данных?

1 Ответ

3 голосов
/ 30 апреля 2020

Вам нужно запустить save(), чтобы сохранить его:

order = Order.objects.get(user=self.request.user, ordered=False)
for order_item in order.items.all():
  item = order_item.item
  item.quantity += 1
  item.save()

Или сделать это за один запрос, используя update():

from django.db.models import F

Item.objects.filter(orderitem__order__user=self.request.user, orderitem__order__ordered=False).update(quantity=F('quantity')+1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...