python - 如何使用 python 从 woocommerce 订单中删除 line_items
问题描述
我试图删除与 woocommerce 订单相关的所有产品以使用新产品更新此订单,但未成功。
为此,我想第一步是删除特定订单的所有line_items并进行更新。
第二步是再次做一个看跌,但这次新产品在 line_items 的位置。
有谁知道我的代码出了什么问题?
在这篇文章https://github.com/woocommerce/woocommerce/issues/22177中,我看到我必须在我的line_items中的每个产品的数量字段中输入0,但它不起作用。
这是我的代码:
def update_woocommerce_order_products_with_quantities(wcapi,order,oldWooOrderHasProducts):
fetched_products=Woo_Order_Has_Products.objects.filter(woo_order_id=order_id)
#FIRST I HAVE TO DELETE THE PRODUCTS OF THE WOOCOMMERCE ORDER
for oldWooOrderHasProduct in oldWooOrderHasProducts:
data = {
"line_items": [
{
"id": str(oldWooOrderHasProduct.wholesale_product.pid),
"quantity": 0,
}
]
}
wcapi.put("orders/"+str(oid),data).json()
#for every product update the price and quantity
for fetched_product in fetched_products:
data = {
"line_items": [
{
"id": str(fetched_product.wholesale_product.pid),
"quantity": str(fetched_product.quantity),
"price": str(fetched_product.price)
}]
}
wcapi.put("orders/"+str(oid),data).json()
解决方案
这里:
for oldWooOrderHasProduct in oldWooOrderHasProducts:
data = {
"line_items": [
{
"id": str(oldWooOrderHasProduct.wholesale_product.pid),
"quantity": 0,
}
]
}
wcapi.put("orders/"+str(oid),data).json()
您data
在每次迭代时都重新绑定,因此只有最后一个值用于 API 调用。您想data
在循环外创建字典,并且只附加到line_items
循环内:
data = {"line_items": []}
for oldWooOrderHasProduct in oldWooOrderHasProducts:
data["line_items"].append({
"id": str(oldWooOrderHasProduct.wholesale_product.pid),
"quantity": 0,
})
第二个循环也有同样的问题。
推荐阅读
- amazon-ec2 - 保存密码的 SSH 或 MobaXterm 到 AWS EC2 实例不起作用
- php - 图像未显示在 php 的 exeoutput 下使用 mpdf
- r - 添加表格标题编号 R-Markdown
- python - 当它“相同”时,张量流中的内核大小和步幅的填充值公式是什么?
- sql - Oracle SQL 插入(如果不存在)
- excel - 使用暗淡变量将公式输入范围
- c++ - 在内联流重载中遍历向量的问题
- embedded - 在编译时禁用 systemD 服务
- c++ - boost::thread_group 在线程完成后永远挂起
- jquery - jQuery针对父级中的第一个div