我的模特:
class InventoryItem(models.Model):
quantity = models.IntegerField()
...
class Requisition(models.Model):
from_inventoryitem = models.ForeignKey(InventoryItem)
quantity = models.IntegerField()
...
假设请购单与下面的inventory_item有一个OneToMany关系,而inventory_item.quantity的初始值为0,当我执行时:
>>> requisition = Requisition.objects.get(id=1)
>>> requisition.from_inventoryitem.quantity = 500
>>> requisition.save()
>>> requisition.from_inventoryitem.quantity
500
>>> inventory_item.quantity
0
>>> requisition.from_inventoryitem == inventory_item
True
数据库和InventoryItem方面的inventory_item.quantity仍为0。 如何将更改更新到数据库?
答案 0 :(得分:2)
这是设计的。您必须单独保存每个实例。 requisition.from_inventoryitem
实际上是从数据库中查询InventoryItem实例,只是为了设置数量。
requisition = Requisition.objects.get(id=1)
requisition.from_inventoryitem.quantity = 500 # this generates another query here!
requisition.from_inventoryitem.save()
甚至更好,使用单个查询,单个保存
inv_item = InventoryItem.objects.get(requisition_set__id=1)
inv_item.quantity = 500
inv_item.save()
最好的方式。单个数据库调用:
InventoryItem.objects.filter(requisition_set__id=1).update(quantity=500)