Python 用一个表单更新多个对象

Python 用一个表单更新多个对象,python,django,Python,Django,我正在造一辆购物车。我有产品型号和购物车项目型号: 类产品(models.Model): name=models.CharField(最大长度=64) description=models.TextField(空白=True) 单位=models.CharField(最大长度=16) 每单位价格=型号。小数点域(最大位数=11,小数点位=2) image=StdImageField(default=“default.jpg”,变体={ '缩略图':{“宽度”:100,“高度”:100,“裁剪”:

我正在造一辆购物车。我有
产品
型号和
购物车项目
型号:

类产品(models.Model):
name=models.CharField(最大长度=64)
description=models.TextField(空白=True)
单位=models.CharField(最大长度=16)
每单位价格=型号。小数点域(最大位数=11,小数点位=2)
image=StdImageField(default=“default.jpg”,变体={
'缩略图':{“宽度”:100,“高度”:100,“裁剪”:True}
})
定义(自我):
返回self.name
类别ShoppingCartItem(models.Model):
user=models.ForeignKey(django\u settings.AUTH\u user\u MODEL,相关的\u name='cart\u items',on\u delete=models.CASCADE)
product=models.ForeignKey(产品,on_delete=models.CASCADE)
数量=型号。正整数字段(默认值=1)
#更新购物车中商品的数量
def更新_数量(自身、数量):

如果quantity我知道,为更新数据库进行多个查询不是一个好主意,并且您希望在一次调用中更新多个objects属性。但是,如果属性值不同,在ORM中没有简单的方法来实现

您可以实施以下其中一项:

单一更新 一般来说,在数据库中使用主数据库的单个更新速度非常快,若更新的数量并没有那个么高,那个就足够了

def update_cart(user_id, cart):
   for product_id, quantity in cart.items():
       ShoppingCartItem.objects.get(user__id=user_id, product__id=product_id).update(quantity=quantity)
使用事务的单次更新
使用
transaction.atomic
将所有更新分组到单个事务中。如果我们有大量的更新,这将优化数据库交互。

我知道对更新数据库进行多个查询不是一个好主意,并且您希望在一次调用中更新多个对象属性。但是,如果属性值不同,在ORM中没有简单的方法来实现

您可以实施以下其中一项:

单一更新 一般来说,在数据库中使用主数据库的单个更新速度非常快,若更新的数量并没有那个么高,那个就足够了

def update_cart(user_id, cart):
   for product_id, quantity in cart.items():
       ShoppingCartItem.objects.get(user__id=user_id, product__id=product_id).update(quantity=quantity)
使用事务的单次更新 使用
transaction.atomic
将所有更新分组到单个事务中。如果我们有大量的更新,这将优化数据库交互