【问题标题】:SQL /peewee. How do I update a record based on condition from another table?SQL /peewee。如何根据另一个表的条件更新记录?
【发布时间】:2020-08-31 09:22:26
【问题描述】:

所以我想在购买商品后更新商店。这些是我正在使用的模型。

class Cart():
    user = pw.ForeignKeyField(User, backref="cart_user", null=True)
    item = pw.ForeignKeyField(
        Item, backref="cart_item", null=True, on_delete='SET NULL')
    payment_status = pw.BooleanField(null=False, default=False)
    payment = pw.ForeignKeyField(Payment, backref="payment", null=True)
    amount = pw.IntegerField(null=False, default=1)

class Item():
    name = pw.CharField(null=False)
    product_type = pw.CharField(null=False)
    size = pw.CharField(null=False)
    color = pw.CharField(null=False, default=False)
    price = pw.IntegerField(null=False)
    image = pw.CharField(null=False)
    stock = pw.IntegerField(null=True)

购买后,我想从库存价值中减去购物车中金额的价值。

item = (Item.update(stock=20)
            .where(Item.id.in_
                   (Cart.select(Cart.item_id)
                    .where((Cart.user == current_id) & (Cart.payment_status == False)))))
    item.execute()

我被困在这里了。我只能硬编码股票价值。我不知道如何从 Item.stock 中减去 Cart.amount

【问题讨论】:

    标签: python sql peewee flask-peewee


    【解决方案1】:

    ok 终于找到解决办法了

    cart_amount = Cart.select(Cart.amount).where(Cart.item_id == Item.id)
    
            item = (Item.update(stock=Item.stock - cart_amount)
                    .where(Item.id.in_
                           (Cart.select(Cart.item_id)
                            .where((Cart.user == current_id) & (Cart.payment_status == False)))))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多