【问题标题】:Delete all records from Odoo model using XMLRPC使用 XMLRPC 从 Odoo 模型中删除所有记录
【发布时间】:2017-12-03 19:04:25
【问题描述】:

根据 Odoo 10 官方文档,使用 XMLRPC 从模型中删除数据的方法是:

models.execute_kw(db, uid, password, 'res.partner', 'unlink', [[id]])

如果我想删除所有 res.partner 记录,我应该使用什么作为 'id'?

【问题讨论】:

    标签: odoo odoo-10


    【解决方案1】:

    首先浏览 res.partner 中的所有记录

    all_id = models.execute_kw(db, uid, password,
        'res.partner', 'search',[[[]]])
    

    循环 'all_id' 并在 unlink 中传递 id

    for id in all_id:
        models.execute_kw(db, uid, password, 'res.partner', 'unlink', [[id]])
    

    【讨论】:

    • 使用此解决方案,您将为每条记录发送一个取消链接请求。这不是很有效。
    • 更好的解决方案是models.execute_kw(db, uid, password, 'res.partner', 'unlink', [all_id]) 没有循环。我认为最好的解决方案是在服务器上编写一个方法,该方法将删除所有 res.partner 记录。然后你可以从 web 服务 api 调用这个方法。
    • 我认为最好的解决方案是在服务器上写一个方法,这将删除所有 res.partner 记录。然后您可以从 Web 服务 api 调用此方法。 (这将是pythonic的编写方式,感谢您分享您的想法)
    • 为什么是三层括号?
    【解决方案2】:

    如 odoo 论坛所述:

    models.execute_kw(db, uid, password, 'res.partner', 'unlink', [])
    

    似乎更容易。

    另一种选择:

    search_ids = models.execute_kw(db, uid, password, 'res.partner', 'search', [])
    models.execute_kw(db, uid, password, 'res.partner', 'unlink', search_ids)
    

    【讨论】:

      猜你喜欢
      • 2022-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多