代码之家  ›  专栏  ›  技术社区  ›  Dhouha

如何解决预期的单例错误:purchase.order.line(57、58、59、60、61、62、63、64)

  •  0
  • Dhouha  · 技术社区  · 6 年前

    我使用的是odoo版本9,我创建了一个模块来定制采购订单的报告。我希望在报表中显示的字段中有文章的供应商参考,但是当我添加显示此字段的代码时 <span> <t t-esc="', '.join([str(x.product_code) for x in o.order_line.product_id.product_tmpl_id.seller_ids])"/> 但当我想开始打印报告时,它会显示一个错误
    QWebException: "Expected singleton: purchase.order.line(57, 58, 59, 60, 61, 62, 63, 64)" while evaluating "', '.join([str(x.product_code) for x in o.order_line.product_id.product_tmpl_id.seller_ids])"

    附言:我不会在模块购买中更改任何内容。 我不知道该怎么解决这个问题,有什么可以帮忙的吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Prasoon    6 年前

    这是因为您的订单有多个订单行,您希望订单只有一个订单行。

    o、 orderline.product_id.product_tmpl_id.seller_id

    只有在有一个orderline的情况下才能工作,否则就需要循环遍历每个orderline。在这里,o.orderline将有多个orderline,您可以从多个orderline获取产品id。如果您尝试o.orderline[0].product_id.product_tmpl_id.seller_id,它将工作,但将仅获取第一个订单行的详细信息。为了获得需要循环查看的所有订单行详细信息。

        2
  •  1
  •   Nitin Kantak    6 年前

    找到多个卖家ID。这就是为什么你要在这里得到身份证号码,即采购订单行(57,58,59,60,61,62,63,64)。你必须从其中选择一个id。要查看结果,请尝试以下操作:

    o.order_line[0].product_id.product_tmpl_id.seller_ids
    

    如果要在报表中显示所有这些卖方ID,请将apply for循环应用到xml中。